2012-03-02 256 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