【发布时间】:2015-04-13 04:58:11
【问题描述】:
我的问题是我想让图像背景透明。以下功能对我来说效果很好,但是在另一台机器上进行测试时,我发现有很多伪影颜色,并且透明度不如我的机器和其他一些机器上那么清晰。 我正在使用调试版本,测试是在发布版本上完成的。但即使使用发布版本,我们也会在不同的机器上看到不同的结果。
Image CreateTransparentBackgroundImage(Image image)
{
using (Bitmap tempBitmap = new Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb))
{
var g = Graphics.FromImage(tempBitmap);
Rectangle rec = new Rectangle(0 ,0,image.Width, image.Height);
g.DrawImage(image,rec, 0, 0,image.Width,image.Height, GraphicsUnit.Pixel);
tempBitmap.MakeTransparent(System.Drawing.Color.White);
g.Dispose();
return (Image)tempBitmap.Clone();
}
}
任何帮助将不胜感激。
【问题讨论】:
-
你在完全相同的源图像上得到不同的结果吗?
-
是的,同一张图片在不同的机器上会给出不同的结果。
-
这听起来很奇怪。您可以发布显示问题的图像或小示例的链接吗? (一个来源和两个修改版本最好..)
-
drive.google.com/file/d/0Bwjj96tG2KSiNmpnbmVMVTNja1E/… 无法上传真实图片,但上面的函数会发生这种情况(黑色背景透明)
-
OK,结果包含黑色、各种深浅不一的白色和一些边缘颜色。原件也应该有助于更接近解释。对不起,如果我再次问这个问题:机器是否使用相同的文件,或者它们是否从相同的进程和相同的源创建源? GDI+ 不应该创建不同的 resilts imo。有没有一种模式,至少有些机器得到了相同的结果..?
标签: c# image-processing graphics bitmap