2014-03-03 92 views
2

我有許多圖像和外部透明像素的圖像。一個例子是: enter image description here將內部透明像素轉換爲白色像素

enter image description here

所以現在我只想填寫內部透明像素(黑色邊框內的),有沒有批量處理的方式來做到這一點?我試過imagemagick轉換工具,但沒有弄清楚如何進行「選擇性」轉換。

感謝您的幫助!

+0

輪椅圖像的黑色邊框顯得不完整的,是完整的,你要轉換的實際圖像中?另外:什麼是圖像格式? –

+0

@WalterTross顯示的圖像是實際圖像,是的,有些邊界確實是模糊的,所以我使用imagemagick中的「-fuzz」參數來處理它。格式是PNG格式。謝謝! – zhengbli

回答

2

有以下幾種方式如何實現這一目標(這一切都取決於圖像是如何組成):

,如果你知道你想保持transparents部分開始於爲0x0 您可以通過刪除的東西全部透明度啓動像http://www.imagemagick.org/Usage/masking/#remove

,然後重新添加使用洪水填充開始爲0x0 http://www.imagemagick.org/Usage/masking/#bg_remove

你有超過什麼用透明矇事的更多控制透明度:

然後你開始修改掩碼(現在只有黑/白),通過着色使用floddfill從0x0開始(即,藍色),白色,然後替換爲黑色的所有藍色像素更換黑色(顏色更換見http://www.imagemagick.org/Usage/color_basics/#replace

# the mask 
convert original.png -alpha extract mask.png 
convert mask.png -fill blue -draw 'color 0,0 floodfill' mask_blue.png 
convert mask_blue.png -fill white -opaque black mask_filled_blue.png 
convert mask_filled_blue.png -fill black -opaque blue mask_filled.png 
# change transparent to skyblue 
convert original.png -background skyblue -alpha remove -alpha off original_nontransparent.png 
# apply the modified mask 
convert original_nontransparent.png mask_filled.png -alpha Off -compose CopyOpacity -composite final.png 

請注意,此techniqe僅適用中度以及用半透明的東西(見http://www.imagemagick.org/Usage/antialiasing/#floodfill)。

爲了獲得更好的半透明效果,您可能需要使用不同的方法來「填充」遮罩。你會即只需畫出形狀,而不是兩個填充操作上的面具:

convert mask.png -fill black -draw "circle 40,80 60,60" mask_filled.png 

這將填補中心,但保持透明度的一半完好。

如果您知道「中心」始終是透明的,您也可以從中心進行填充。

希望這有助於

+0

填充工程就像一個冠軍!非常感謝你的指導! – zhengbli