我有一个定义为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
这里我要用到的神奇参数是什么?
当svg单位不是px(例如cm)时,Inkscape似乎无法工作。我得到一个空白图像。也许,它可以通过旋转dpi来修复,但它太麻烦了。
Svgexport是一个node.js程序,所以通常不太有用。
Imagemagick的转换工作正常:
convert -background none -size 1024x1024 infile.svg outfile.png
如果您使用-resize,图像是模糊的,文件是大得多。
BEST
rsvg-convert -w 1024 -h 1024 infile.svg -o outfile.png
它速度最快,依赖性最小,输出比convert小30%左右。安装librsvg2-bin获取:
sudo apt install -y librsvg2-bin
似乎没有手册页,但你可以输入:
rsvg-convert --help
去寻求帮助。简单就是好。
对于简单的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]