我有一个SVG文件,其定义大小为16x16 . 当我使用Image Magick的转换程序将其转换为PNG时,我得到一个16x16像素的PNG,这太小了:
convert test.svg test.png
我需要指定输出PNG的像素大小 . -size
参数似乎被忽略, -scale
参数缩放PNG after 它已被转换为PNG . 到目前为止,我通过使用 -density
参数得到了最好的结果:
convert -density 1200 test.svg test.png
但我不满意,因为我想指定输出大小(以像素为单位)而不用数学来计算密度值 . 所以我想做这样的事情:
convert -setTheOutputSizeOfThePng 1024x1024 test.svg test.png
那么我在这里使用的神奇参数是什么?
13 回答
当svg单位不是
px
(例如cm)时,Inkscape似乎不起作用 . 我有一张空白图片 . 也许,它可以通过调整dpi来修复,但它太麻烦了 .Svgexport是一个node.js程序,因此通常不太有用 .
Imagemagick的转换工作正常:
如果使用
-resize
,图像模糊,文件更大 .BEST
它是最快的,具有最少的依赖性,并且输出比转换小约30% . 安装librsvg2-bin来获取它 . 似乎没有手册页,但您可以键入:
得到一些帮助 . 简单就是好 .
我来到这篇文章 - 但我只是想通过批量和快速进行转换而不使用任何参数(由于几个不同大小的文件) .
对我来说,要求可能比原作者要容易一些 . (想在MS PowerPoint中使用SVG,但不允许)
在这个例子中,我无法从ImageMagick中获得好的结果,但是Inkscape在Linux和Windows上做得很好:
以下是使用此命令将16x16 SVG缩放为200x200 PNG的结果:
仅供参考,我的Inkscape版本(在Ubuntu 12.04上)是:
在Windows 7上,它是:
我已经通过更改
<svg>
标签的width
和height
属性以匹配我的预期输出大小然后使用ImageMagick进行转换来解决了这个问题 . 奇迹般有效 .这是我的Python代码,一个将返回JPG文件内容的函数:
如果您使用的是MacOS X并且在使用Imagemagick转换时遇到问题,您可以尝试使用RSVG lib重新安装它 . 使用HomeBrew:
验证它是否正确委派:
它应该显示
rsvg
.@ 808sound的最佳答案对我不起作用 . 我想调整
的大小
得到
所以我打开了Inkscape,然后转到
File
,Export as PNG file
并弹出一个GUI框,允许我设置我需要的确切尺寸 .版本
Ubuntu 16.04 Linux
:Inkscape 0.91 (September 2016)
(此图片来自Kenney.nl's asset packs)
按照Jose Alban's answer中的步骤操作后,我能够使用以下命令使ImageMagick正常工作:
数字1536来自球场的密度估计,有关详细信息,请参阅this answer .
你为什么不试试inkscape命令行,这是我的bat文件将这个目录中的所有svg转换为png:
有点让我感到厌烦的是在输入文件名后设置
-density
. 那没用 . 将它移动到转换中的第一个选项(在其他任何事情之前)使它工作(对我来说,YMMV等) .对于简单的SVG到PNG转换,我发现cairosvg(https://cairosvg.org/)的性能优于ImageMagick . 在目录中的所有SVG文件上安装和运行的步骤 .
在包含.svg文件的目录中打开python shell并运行:
这也将确保您不会覆盖原始的.svg文件,但会保留相同的名称 . 然后,您可以将所有.png文件移动到另一个目录:
要重新缩放图像,应使用选项
-density
. 据我所知,标准密度为72,尺寸为1:1 . 如果您希望输出png是原始svg的两倍,请将密度设置为72 * 2 = 144:这不是完美的,但它确实起到了作用 .
基本上它可以将DPI提高到足够高的水平(只需使用经过教育/安全的猜测),即调整大小是以足够的质量完成的 . 我试图找到一个合适的解决方案,但经过一段时间后决定这对我目前的需求来说已经足够了 .
试试svgexport:
svgexport是一个简单的跨平台命令行工具,我将svg文件导出到jpg和png,有关更多选项,请参阅here . 要安装svgexport install npm,请运行:
编辑:如果您发现库有问题,请在GitHub上submit it,谢谢!