我有一个定义为16x16大小的SVG文件。当我使用ImageMagick的转换程序将其转换为PNG时,我得到了一个16x16像素的PNG,太小了:

convert test.svg test.png

我需要指定输出PNG的像素大小。-size parameter似乎被忽略了,-scale parameter在PNG被转换成PNG后缩放。到目前为止,我使用-density参数得到的最好结果是:

convert -density 1200 test.svg test.png

但我并不满意,因为我想指定以像素为单位的输出大小,而不做数学运算来计算密度值。所以我想这样做:

convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png

这里我要用到的神奇参数是什么?


当前回答

Try svgexport:

svgexport input.svg output.png 64x
svgexport input.svg output.png 1024:1024

svgexport是一个简单的跨平台命令行工具,我已经为导出svg文件jpg和png,看到这里更多的选项。要安装svgexport install npm,执行以下命令:

npm install svgexport -g

编辑:如果你发现图书馆的问题,请在GitHub上提交,谢谢!

其他回答

为什么不试试inkscape命令行,这是我的bat文件,将所有SVG在这个目录转换为png:

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

如果没有librsvg,你可能会得到一个黑色的png/jpeg图像。我们必须安装librsvg转换svg文件与imagemagick。

Ubuntu

 sudo apt-get install imagemagick librsvg
 convert -density 1200 test.svg test.png

操作系统

 brew install imagemagick librsvg
 convert -density 1200 test.svg test.png

对于简单的SVG到PNG转换,我发现cairosvg (https://cairosvg.org/)比ImageMagick执行得更好。安装和运行目录中所有SVG文件的步骤。

pip3 install cairosvg

在包含.svg文件的目录中打开一个python shell,然后运行:

import os
import cairosvg

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]

在Linux上用Inkscape 1.0将svg转换为png需要使用

inkscape -w 1024 -h 1024 input.svg --export-file output.png

not

inkscape -w 1024 -h 1024 input.svg --export-filename output.png

这不是完美的,但它做到了。

convert -density 1200 -resize 200x200 source.svg target.png

基本上,它增加了足够高的DPI(只是使用一个有根据的/安全的猜测),调整大小是有足够质量的。我试图找到一个合适的解决方案,但过了一段时间后,我认为这已经足够满足我目前的需求了。

注意:使用200x200!强制执行给定的决议