我在大学时正在研究机器学习问题,我的第一份工作是将图像转换成黑白图像。
问题是我的图片有透明度,我不知道如何删除它。
我在尝试什么:
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”调用后的输出图像示例:
有谁知道发生了什么事?看起来像背景,字母有相同的颜色...如果我着色为白色,我的背景是黑色的?
谢谢!
答案 0 :(得分:5)
您需要先将CompositingMode
对象的Graphics
设置为SourceOver
,然后再将其他图片绘制到其上。
g.Clear(Color.White);
g.CompositingMode = CompositingMode.SourceOver;
g.DrawImage(src, 0, 0);
默认CompositingMode
为SourceCopy
,即src
图片中的透明黑色(R = G = B = A = 0)像素并将其渲染为黑色像素。 SourceOver
将执行alpha混合,这正是您正在寻找的。 p>
详情请见此处:CompositingMode Enumeration