我有一个定义为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

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


当前回答

上面的@808sound回答不适合我。我想调整一下尺寸

并得到了

所以我打开Inkscape,然后选择文件,导出为PNG文件,然后弹出一个GUI框,允许我设置所需的精确尺寸。

Ubuntu 16.04 Linux版本: Inkscape 0.91(2016年9月)

(图片来自肯尼。顺便提一下Nl的资产包)

其他回答

让我头疼的一件事是在输入文件名之后设置-density。这并没有起作用。移动到转换的第一个选项(在其他任何东西之前)使它工作(对我来说,YMMV等)。

如果没有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单位不是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

去寻求帮助。简单就是好。

如果你在MacOS X上,Imagemagick的转换有问题,你可以尝试用RSVG库重新安装它。 使用自制程序:

brew remove imagemagick
brew install imagemagick --with-librsvg

验证它是否正确地委托:

$ convert -version
Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-12-17 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates: bzlib cairo fontconfig freetype jng jpeg lcms ltdl lzma png rsvg tiff xml zlib

它应该显示rsvg。

在使用brew的macOS上,直接使用librsvg效果很好

brew install librsvg
rsvg-convert test.svg -o test.png

通过rsvg-convert——help可以获得许多选项