Answers:
ImageMagick具有可用于Linux和Windows(及其他)的命令行工具。转换工具通常称为“转换”。这是一些使用说明文件。
在这里您可以获取Windows安装程序。
ImageMagick不应立即与任何涉及图像的批处理任务相关联。特别是在ImageMagick不能很好地解决SVG转换的情况下。
最好在命令行上尝试Inkscape:
inkscape in.svg --export-png=out.png
-z
选项即可。
命令行开箱即用,我还想转换100个文件。这是我如何在Windows 7上使其工作:
安装inkscape-不是便携式的!
将所有svg文件复制到一个文件夹中,例如:“ C:\ svgs \”:
您convert.bat
使用以下行创建文件:
FOR %%A IN (*.svg) DO "C:\Program Files (x86)\Inkscape\inkscape.exe" --export-png=%%A.png
(指向安装的正确文件夹):
以管理员身份打开CMD!为此,请按WIN键,键入cmd,右键单击“ cmd.exe”,然后选择“以管理员身份运行”。
导航到“ C:\ svgs \”并输入convert.bat
-所有svg文件都将转换为PNG。
使用Windows资源管理器搜索转换后的PNG文件。在我的PC上,它们位于以下文件夹中:C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
希望能有所帮助。
由于只能在我所看到的范围内固定设置命令行的分辨率,因此最终使用了InkscapeBatch工具。在那里,我可以设置DPI以相对增加所有图像。
您需要指定正确的设置,否则将无法使用。这是我所做的:
点击“完成”后,您需要在工具栏中按下“启动批处理转换器...”按钮:
%%A
(作为输入文件名)。另外,为什么您认为它仅应在管理员模式下工作?
--export-dpi=100
,其中100是dpi的值
InkscapeBatch在Windows上完成这项工作。需要Inkscape。
对于SVG到PNG的转换,我发现cairosvg(https://cairosvg.org/)的性能优于ImageMagick。在目录中所有文件上安装和运行的步骤。
pip3 install cairosvg
在包含.svg文件的目录中打开python shell并运行:
import os
for file in os.listdir('.'):
name = file.split('.svg')[0]
cairosvg.svg2png(url=name+'.svg',write_to=name+'.png')
这也将确保您不会覆盖原始的.svg文件,但会保持相同的名称。然后,您可以使用以下命令将所有.png文件移动到另一个目录:
$ mv *.png [new directory]
经过了将近2个小时的搏斗,我选择了Inkscape。由于需要批量转换许多不同分辨率的文件,因此我创建了Powershell脚本。使用106个SVG,我的计算机冻结了大约5秒钟,因此在使用时要小心。
# ENTER THE FULL PATH TO THE INKSCAPE EXECUTABLE
$inkscapeExe = "C:\Program Files\Inkscape\inkscape.exe"
# ENTER THE PATH TO THE FOLDER CONTAINING THE SVGs
$svgFolder = "C:\Images\SVG"
# ENTER THE DESIRED WIDTH
$width = 120
# ENTER THE DESIRED HEIGHT
$height = 120
$svgFiles = Get-ChildItem $svgFolder -Filter *.svg
foreach ($svgFile in $svgFiles)
{
$inputParam = $svgFile.FullName
$outputParam = "--export-png=" + $svgFile.FullName + "-" + $width + "x" + $height + ".png"
$widthParam = "-w" + $width
$heightParam = "-h" + $height
& $inkscapeExe $inputParam $outputParam $widthParam $heightParam
}
&
操作员启动一个新的进程,并立即继续进行,因此该脚本将许多新inkscape.exe过程,你有SVG文件创建。事实证明,这会使您的计算机缓慢运行一段时间。
| Out-Null
以该行开头的行的末尾,&
将强制其一次运行inkscape.exe命令,这对我来说要好得多。
您可以在Bash / Ubuntu for Windows中的SVG所在的文件夹中使用以下命令。但是,似乎ImageMagick首先栅格化然后调整大小,这会导致奇怪的伪像……
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
另请参阅此处的基于Inscape的解决方案,它似乎运行良好(从另一个线程开始,链接丢失): mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
find -name "*.svg" -exec inkscape {} -e {}.png \;
尽管我更喜欢该版本:ls | grep ".svg" | xargs -I file inkscape file -e file.png
因为文件是按字母顺序处理的,使用时则不是这种情况find
ImageMagick可用于Windows,并且可以在SVG,PNG和ICO(以及其他)之间转换。您可以设置输出文件的大小和其他属性。
我找不到一个可以运行批处理的命令,因此我通过生成文件列表并创建一系列命令来使其正常工作。这些说明应适用于所有版本的Windows。所有键入说明均排除引号,并包括引号之间的所有内容。
为此,您将需要Inkscape,MS Excel或类似的电子表格编辑器以及列表生成器。这里有一个很棒的免费软件列表生成器:https : //www.portablefreeware.com/?id=1171
如果正确完成此操作,则每个文件名都应有一行,如下所示:| inkscape C:\ SVG \ | Filename1.svg | --export-png = C:\ PNG \ | Filename1.png |
希望这会使某人的生活更轻松。詹姆士
凯的答案很接近,但对我没有用。但是,经过一些微调,这在第一次就可以完美地工作了:
convert.bat
convert.bat
在您喜欢的文本/代码编辑器中打开,然后输入以下内容:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(请注意,该inkscape.exe
位置应与您的PC上的可执行程序位置相匹配;第二个位置--export-png
是%%A
-这是要转换的SVG文件)
convert.bat
运行,它将回显转换结果。请注意,您可能需要刷新Windows文件夹才能看到新文件,但是它们都应该在与原始SVG相同的位置创建。
由于某种原因,无法使imagemagick或inkscape为我工作。我只有12个文件要转换,而只是手动使用了该站点:http : //svgtopng.com/确实很不错。
这是一个基于ImageMagick的解决方案,可将给定目录中的所有svg文件转换为ico文件:
mogrify -format ico -density 1200 -background transparent -trim -resize 256x256 -gravity center -extent 256x256 -define icon:auto-resize *.svg
说明:
mogrify
:与相似convert
,但允许您批量处理多个文件。-format ico
:我们的目标文件格式。创建.ico
文件而不是覆盖原始文件(默认情况下,mogrify会这样做)。-density 1200
:由于我们无法指定ImageMagick栅格化SVG的目标像素大小(它将首先以默认密度栅格化然后缩放),因此我们以极高的分辨率(1200dpi)栅格化SVG,以确保图像将缩小为256x256,而不是放大。-background transparent
:背景将呈现为透明。-trim
:删除图像周围的现有边框。-resize 256x256
:缩放图像,确保最长的一面具有256px,并保持宽高比。-gravity center -extent 256x256
:放大画布,确保短边也有256像素。现有图像是居中对齐的。这是必要的,因为我们需要一个正方形图像作为ICO文件的基础。-define icon:auto-resize
:在ICO文件中不仅包括256x256图像,还包括所有建议的缩小分辨率(例如32x32)。此处给出的大多数答案都忽略了问题中所需大小的部分。使用convert
“升级” SVG时,无法获得令人满意的结果。inkscape
可以做得更好,并且可以保留背景透明性。
根据您的用例,使用以下选项之一:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
请注意,指定宽度和高度也不会保留宽高比。
要一次转换许多文件,请针对您的用例(bash
兼容或兼容)调整以下内容:
for f in *.svg; do
inkscape $f -d 300 -e ${f%.*}.png
done
apt install imagemagick