我正在大學學習機器學習問題,我的第一份工作是將圖像轉換成黑白圖像。移除圖像透明度
問題是我的圖像有透明度,我不知道如何去除它。
我試圖:
public static Bitmap RemoveTransparency (Bitmap src)
{
Bitmap target = new Bitmap (src.Size.Width, src.Size.Height);
Graphics g = Graphics.FromImage (target);
g.Clear (Color.White);
g.DrawImage (src, 0, 0);
return target;
}
輸入圖像的一個例子:
後 「RemoveTransparency」 呼叫輸出圖像的一個例子:
確實任何人都知道發生了什麼事?看起來像背景的字母有相同的顏色...我的背景是黑色的,如果我着色爲白色?
謝謝!
什麼是你的'src'圖像的來源?它以什麼方式「具有透明度」?如果它實際上是一個32bpp位圖,透明像素的alpha值爲0,那麼你發佈的代碼就可以工作。所以這並不意味着你會留下一些關於原始圖像的關鍵信息。您應該發佈一個完整的代碼示例,包括源位圖的自包含初始化。請參閱http://stackoverflow.com/help/mcve – 2014-12-01 17:59:14
備案:我下載了包含在問題中的確切圖像,運行問題中的代碼,並將結果保存到新的.png文件中。正如預期的那樣,它工作正常。你得到的答案可能是一個解決方法,以抵消你的代碼中的一些其他錯誤,但它不是真正的解決這個問題的正確方法,如果你期望原始位圖像過去一樣具有透明度,有你的問題。 – 2014-12-01 18:21:45
@PeterDuniho你在這裏傳播錯誤信息。我也下載了圖像。它有透明的黑色像素。 'Graphics'對象的默認'CompositingMode'是'SourceCopy'。 「...並將結果保存到一個新的.png文件中。」您的PNG文件具有透明度,所以您的輸出也具有透明的黑色像素。嘗試保存爲不帶alpha通道的JPG。您會發現圖像全黑,因爲在白色背景上繪製透明黑色像素時未使用Alpha混合。 – 2014-12-01 18:43:11