2015-10-17 48 views
1

我想保存在GDI +透明GIF,但它似乎在重複使用的顏色表中第一個顏色 - 這是GDI的錯誤嗎?保存在GDI +或WPF透明的GIF

即使我手動設置的顏色和重新保存爲GIF爲GIF,我永遠不能得到它的輸出透明的gif到文件:

Bitmap b = new Bitmap("c:\\temp\\source.gif"); 

Bitmap canvas = new Bitmap(b.Width, b.Height); 

Graphics g = Graphics.FromImage(canvas); 
g.Clear(Color.Transparent); 

// Draw image 
g.DrawImage(b, 0, 0); 

canvas.MakeTransparent(Color.Black); 
canvas.Save("c:\\temp\\output.gif", System.Drawing.Imaging.ImageFormat.Gif); 

在輸出圖像中黑色是永遠不會設置爲透明度顏色。

或者是有沒有辦法在WPF做到這一點?

+0

它是安裝完全太多的麻煩專利只是一個笨拙的舊圖像格式。微軟選擇爲它提供很差的支持:)對於這樣的代碼,仍然沒有任何意義。改用PNG。 –

+0

如果問題是在GIF部件本身,那麼這裏有一個[可能重複(http://stackoverflow.com/questions/6495952/how-can-i-save-a-gif-with-a-transparent-background )。獎勵:一個直接鏈接到[漢斯帕桑特的答案](http://stackoverflow.com/a/6496634/5240004) – theB

+0

由於已經看到,但在C#重裝時,只會修復圖像,能有效地需要一個「標準從GDI +輸出「,所以我可以在透明或確認的其他程序中查看GIF GDI +無法做到這一點。我需要的'修復'將在圖像保存上,而不是圖像加載。 – SteevieP

回答

0

我建議你看看這個圖像處理庫ImageMagick的http://www.imagemagick.org/

然後使用這個命令來保存GIF轉換成GIF透明背景

convert orig.gif -transparent black transp.gif 

這可能不會產生理想的結果,但值得一試。如果您不想通過運行控制檯命令來執行此操作,您可能還需要查看ImageMagick的.NET Wrapper https://magick.codeplex.com/