删除图像中的白色背景仍然有白色边缘c#

时间:2016-05-03 12:32:58

标签: c# asp.net image image-processing bitmap

我正在尝试编写可以从background移除白色jpeg的代码 - 图片,可以将它们保存为相同的格式。

到目前为止,这是我的代码:

string imgPath = Server.MapPath("~/App_Files/" + Profile.CompanyName + "/Temp/test.jpg");
Bitmap bmp = RADBase.ImageHandler.LoadImage(imgPath);
bmp.MakeTransparent(Color.White);
System.Drawing.Imaging.ImageFormat format = new System.Drawing.Imaging.ImageFormat(Guid.NewGuid());
bmp.Save(imgPath, format);

它会删除白色背景,但图像上仍有白色边缘。不确定如何删除完整的白色背景?

这是图片: http://cyphernet.co.za/bg-test/CGU3-black.jpg

结果如下: http://cyphernet.co.za/bg-test/test.jpg

2 个答案:

答案 0 :(得分:1)

一种方法是创建一系列颜色,看起来是白色并检查每个像素是否为“白色”。然后,您可以将这些像素设置为Color.Transparent

string imgPath = Server.MapPath("~/App_Files/" + Profile.CompanyName + "/Temp/test.jpg");
Bitmap source = new Bitmap(imgPath);
source.MakeTransparent();
for (int x = 0; x < source.Width; x++)
{
    for (int y = 0; y < source.Height; y++)
    {
        Color currentColor = source.GetPixel(x, y);
        if (currentColor.R >= 220 && currentColor.G >= 220 && currentColor.B >= 220)
        {
            source.SetPixel(x, y, Color.Transparent);
        }
    }
}
source.Save(imgPath);

这是一个粗略的解决方案,因为很难说,如果一种颜色是白色或不是白色。也许你必须调整范围以获得更好的结果。 另一点是,T恤的某些颜色看起来也是白色,所以这些也是透明的。

答案 1 :(得分:-3)

你应该清理所有白色的catefories,你可以看到链接下面的类别。你可以看到特别灰色和白色的类别(灰色类别= gri kategorisi,白色类别= beyaz类别)。您可以使用RBG值删除颜色。

Here Categories