2011-12-09 34 views
2

我需要從圖像中提取原始的Alpha,以便將其傳遞給應用程序以用作不透明蒙版。預期的格式是每個像素8個字節的無符號整數。我如何用ImageMagick做到這一點?我試過convert image.png image.a,但.a文件似乎沒有正確的數據。使用ImageMagick導出原始的Alpha

什麼是用ImageMagick提取alpha的最佳方法?理想情況下,這可以支持任何支持alpha或透明度的輸入圖像格式。

回答

2

試試這個:

convert image.png -channel A -separate image_alpha.png 

嗯,這是很簡單:你把Alpha通道,並將其保存到另一個文件。具有1通道png的腳本輸出(每個像素8個字節)。

+0

這是一個良好的開端,但我需要擺脫這種原始數據文件,而不是一個PNG。有任何想法嗎? –

+0

嗯。我不認爲,這是可能的。你應該使用其中一個IM端口編寫自己的程序(http://imagemagick.org/script/api.php):它將提取alpha通道,將其寫入內存中的圖像,迭代其像素並將其寫入文件需要的格式。作爲選項,可以考慮使用BMP - 它的格式非常簡單,主要由原始數據組成。 – moropus

3

試試這個:

$ convert -size 16x16 xc:none -draw "stroke black fill red circle 8,8 4,4" circle_on_transparent_bg.png 

$ convert circle_on_transparent_bg.png -channel A -separate -depth 8 gray:image_alpha.raw 

$ od -t x1 image_alpha.raw 
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
* 
0000040 00 00 00 00 00 01 20 89 be 8a 20 01 00 00 00 00 
0000060 00 00 00 00 10 ff ff ff ff ff ff ff 12 00 00 00 
0000100 00 00 00 13 ff ff ff ff ff ff ff ff ff 11 00 00 
0000120 00 00 01 ff ff ff ff ff ff ff ff ff ff ff 01 00 
0000140 00 00 21 ff ff ff ff ff ff ff ff ff ff ff 1f 00 
0000160 00 00 8d ff ff ff ff ff ff ff ff ff ff ff 89 00 
0000200 00 00 c0 ff ff ff ff ff ff ff ff ff ff ff ff 00 
0000220 00 00 8b ff ff ff ff ff ff ff ff ff ff ff 93 00 
0000240 00 00 21 ff ff ff ff ff ff ff ff ff ff ff 24 00 
0000260 00 00 01 ff ff ff ff ff ff ff ff ff ff ff 01 00 
0000300 00 00 00 10 ff ff ff ff ff ff ff ff ff 11 00 00 
0000320 00 00 00 00 12 ff ff ff ff ff ff ff 10 00 00 00 
0000340 00 00 00 00 00 01 23 91 c4 8e 22 01 00 00 00 00 
0000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0000400 
相關問題