原理是循环图片的每一个像素点,如果这个像素的颜色和需要替换的颜色相同,那么就用SetPixel(int x, int y, Color color);进行替换。需要用到System.Drawing命名空间,代码如下:
public static Bitmap CovertColor(Bitmap imgObj, string oldColor, string newColor)
{
//转换颜色类型 如把#ffffff转换成Color对象
var Color1 = ColorTranslator.FromHtml(oldColor);
var Color2 = ColorTranslator.FromHtml(newColor);
for (var x = 0; x < imgObj.Width; x++)
{
for (var j = 0; j < imgObj.Height; j++)
{
//获取像素的颜色
Color pixelColor = imgObj.GetPixel(x, j);
if (Color1.ToArgb() == pixelColor.ToArgb())
{
//设置像素的颜色
imgObj.SetPixel(x, j, Color2);
}
}
}
return imgObj;
}