我在大学时正在研究机器学习问题,我的第一份工作是将图像转换成黑白图像.
问题是我的图像有透明度,我不知道如何删除它.
我在想什么:
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;
}
Run Code Online (Sandbox Code Playgroud)
输入图像的示例:

"RemoveTransparency"调用后的输出图像示例:

有谁知道发生了什么?看起来像背景,字母有相同的颜色...如果我着色为白色,我的背景是黑色的?
谢谢!
在将其他图像绘制在其上之前CompositingMode,需要将Graphics对象设置为SourceOver.
g.Clear(Color.White);
g.CompositingMode = CompositingMode.SourceOver;
g.DrawImage(src, 0, 0);
Run Code Online (Sandbox Code Playgroud)
默认设置CompositingMode是SourceCopy,将图像中的透明黑色(R = G = B = A = 0)像素src渲染为黑色像素.SourceOver将进行alpha混合,这是你正在寻找的.
有关详细信息,请参见此处:CompositingMode枚举
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |