2012-03-02 209 views
45

我想将透明背景和反锯齿边缘(使用半透明像素)的SVG图像转换为PNG文件。不幸的是,我不能让ImageMagick去做抗锯齿,边缘总是看起来很糟糕。这是我的尝试:使用ImageMagick将SVG转换为透明PNG使用ImageMagick

convert +antialias -background transparent in.svg -resize 25x25 out.png 

任何想法或不同的命令行工具,我可以使用?

回答

48

Inkscape中会做到这一点:

inkscape \ 
    --export-png=out.png --export-dpi=200 \ 
    --export-background-opacity=0 --without-gui in.svg 
+1

我发现的第一个解决方案保留了一些SVG的调色板,例如, Apache NiFi的徽标(https://nifi.apache.org/assets/images/apache-nifi-logo.svg)。 – timss 2018-03-01 12:09:40

15

其实,阅读文档的ImageMagick:

-antialias

启用绘制字体和线条时抗锯齿像素渲染/禁用。 默认情况下,绘制时对象(例如文本,线条,多边形等)是抗锯齿的。使用 + antialias禁用抗锯齿边缘像素的添加。然后,这会将添加到图像的颜色数量减少到仅仅直接绘制的颜色数量。也就是说,绘制这样的对象时不添加混合>颜色。

+ antialias确实会禁用抗锯齿功能。

59

作为一个侧面说明,我发现获得透明度有点棘手。而不是使用透明,我不得不使用

convert -background none in.svg out.png 
+0

至少在这个时候(6.8.6),它也适用于_transparent_。 – 2014-01-09 10:43:04

+3

“无”和“透明”都为我创建了不透明的白色背景。不透明。我在Mac上使用6.8.8-3 – petrsyn 2014-03-21 13:35:30

+2

'-background none'为我工作,ImageMagick 6.8.6-6在mac上 – commonpike 2014-03-29 17:58:00

9

我学会了如何做到这一点是从方法论发现这里的道路:How to convert a .eps file to a high quality 1024x1024 .jpg?

这是相同的思路@ halfer与inkscape解决方案--to第一抬高DPI - 但你可以使用-density选项在imagemagick中完成同样的操作。

convert -density 200 in.svg -resize 25x25 -transparent white out.png 
相关问题