2012-09-14 228 views
15

我在.jpg format圖像與white background color。我想在Imagemagick中將白色背景顏色清除爲透明。我嘗試了很多方法,但仍然無法刪除白色背景。有人能幫我解決這個問題嗎?如何用ImageMagick中的圖像透明替換白色背景顏色?

+0

那你試試?您可能必須先將其轉換爲「索引顏色」模式(例如PNG)。無論您如何操作,您都可以指望出現在圖像和透明之間的邊界處的文物。 – msw

+0

透明白:http://stackoverflow.com/questions/2322750/replace-transparency-in-png-images-with-white-background –

回答

24

首先,您需要將圖像格式轉換從.jpg.png格式,因爲JPEG不支持透明度。然後使用這個命令:

convert image1.png -fuzz 20% -transparent white result.png

-fuzz選項允許從純白色色指定百分比的偏差轉換爲透明爲好。例如,當圖像包含噪點或微妙的漸變時,這很有用。

+13

我的回答有什麼問題? (你沒有告訴你的問題,你需要某種程度的模糊性,也沒有提供一個示例文件 - 所以不可能猜到......) –

+6

不需要將文件*首先*從JPEG轉換爲PNG,並且只有*然後*將白色轉換爲透明。我的命令全部用*一個*去完成。 –

+2

@KurtPfeifle我明白他本可以幫你改進你的答案,而不是回答他自己的問題;但沒有'-fuzz 20%'這不起作用;我認爲你的答案可以通過模糊選項btw得到改善,我認爲這樣做絕對沒有問題;他的回答也不完全正確,因爲我可以從jpg直接轉到png結果;最後,這兩個答案都帶來了嚴重的問題;輪廓背景顏色(這裏是黑色)變得透明;而且實際圖像內的所有黑色也變得透明;究竟是什麼把我的形象弄亂了......:> –

45

你不能在你的JPEG透明背景顏色。 JPEG文件格式不支持透明度。

如果需要透明的背景下,您需要將JPEG轉換爲

  • 或者PNG(高品質,文件大小可能比JPEG大)
  • 或GIF(如果你能忍受低質量和最大255色的範圍)。

示例命令:

convert your.jpg -transparent white your.png 
+1

我必須讀您的文章,並沒有實際的命令;以爲你建議「手動轉換」抱歉的混淆,我投了你的答案。我對語法不是很熟悉,但我有它的能力。 – Jim22150

6

我只是找到了一個非常美妙的事情!

magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png 

這是弗雷德Weinhaus bash腳本,可以從here下載(只用於非商業用途)。還有大約250個腳本!這一個很棒!它完全消除了所有背景,同時保持內部圖像點不變!

在他的網頁,有幾個圖像作爲例子,讓你選擇你需要把在命令行中的!

初始位置1,1是一般的猜測者說所有的輪廓是背景。

講究的輸出必須是 「png格式」

+0

完全不可思議,謝謝! – dsummersl

1

這是我沒有magicwand液(用於IM < 7.0更換magick通過convert):

magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png 
+1

at ubuntu imagemagick v8:6.7.7.10 - 錯誤'convert.im6:不符合繪圖原始定義'alpha'@ error/draw.c/DrawImage/3158.',任何想法? –

+0

下面是imagemagick 6的右側命令: convert「./input.jpg」-fill none -draw'color 1,1 floodfill'output.png –