2012-11-13 51 views
6

我有我想要將整個圖像轉換爲半透明的PNG文件。該圖像將在KML文件中作爲圖標疊加層引用,以用於Google地球/地圖。在Centos Linux上使用ImageMagick創建半透明PNG

以下示例已使用ImageMagick轉換命令向我建議,但似乎都不起作用。第一個示例導致錯誤,第二個示例無法對圖像進行任何可觀察的更改。

$ /usr/local/bin/convert 121112142121.png -channel Alpha -evaluate Set 50% 2121112142121.png 
convert: no decode delegate for this image format '121112142121.png' @ error/constitute.c/ReadImage/550. 
convert: option requires an argument '-evaluate' @ error/convert.c/ConvertImageCommand/1400. 

第二種建議的方法是這樣的:

convert filename.png -fill '#00000080' -draw 'matte 100,100 reset' output.png 

雖然我可以在網上找到許多例子,用於創建從特定顏色或α掩模完全透明的圖像,我似乎無法找到任何該工作用於創建半透明圖像。我想找到一種方法來使用convert命令或ImageMagick Perl來完成此操作。

ImageMagick版本是6.8.0-4。

回答

12

分辨率已經發現:

convert input.png -alpha set -channel A -evaluate set 50% output.png 

上面的命令使得整個圖像(所有顏色)半透明。

我遇到的另一個問題是ImageMagick的最新版本是從源代碼編譯的,沒有安裝所有最新的圖像庫(特別是libpng)。密切關注configure的輸出以確保從源編譯libpng。它也似乎早於6.6版本和/或較早版本的libpng版本ImageMagick可能不支持透明PNG生成。

+8

如果您想使其與原始圖像無關(只是所有像素的透明度的兩倍),您還可以使用'-evaluate Divide 2'。 – caw

+6

這種方法的問題是,如果你已經在圖像中有完全透明的像素,它們的透明度似乎也會改變,使它們變成半透明的黑色:(任何想法? –

0

對Tony Bogdanov的評論進行跟進。如果你已經有了完全透明的像素,你可能需要使用以下策略:

1)透明像素轉換成面具

convert -alpha extract input.png mask.png

2)執行在回答上面列出的命令:

convert input.png -alpha on -channel a -evaluate set 65% output.png

3.)創建空白畫布相同的尺寸爲原始圖像

例如:convert -size 700x800 xc:none blankcanvas.png

4)複合材料中的半透明圖像一起使用透明像素掩模

composite output.png blankcanvas.png mask.png -compose Src final_output.png

4
convert input.png -alpha set -channel A -evaluate Divide 2 output.png 

感謝您的空白畫布@caw在您的評論指出了這一點。這有助於在圖像已經具有一些透明像素的情況下。 -evaluate set 50%廢棄具有alpha 0的已透明像素,將它們的alpha設置爲50%,這往往是不可取的。

-evaluate Divide 2保留了alpha,因爲完全透明的像素是alpha 0,0除以2仍然是0。