我尝试用绿色替换白色,但下面的代码不会改变颜色。
代码:
private static MagickImage ChangeWhiteColor(MagickImage Image, Color TargetColor)
{
Image.Opaque(MagickColor.FromRgb((byte)255, (byte)255, (byte)255),
MagickColor.FromRgb(TargetColor.R,
TargetColor.G,
TargetColor.B));
return Image;
}
UPD 我尝试更改复合引力和运算符,但没有任何变化。
我应该做什么?
答案 0 :(得分:2)
如果您需要更换完美的白色(R = 255,G = 255,B = 255或#ffffff,如果您愿意的话),您的代码就可以使用。
如果您尝试将类似(但不完全相同)的颜色替换为白色,则可以使用ColorFuzz
来引入容差。
要实现此目的,您可以在方法中添加一个新的fuzz
参数,如下所示:
private static MagickImage ChangeWhiteColor(MagickImage Image, Color TargetColor, int fuzz)
{
Image.ColorFuzz = new Percentage(fuzz);
Image.Opaque(MagickColor.FromRgb((byte)255, (byte)255, (byte)255),
MagickColor.FromRgb(TargetColor.R,
TargetColor.G,
TargetColor.B));
return Image;
}
例如考虑以下包含三个白色矩形的图像。在每个形状下,我报告了RGB值。左边的第一个矩形填充纯白色,而第二个和第三个矩形填充非常类似于白色的浅灰色:
您的原始代码只会替换左侧的第一个白色矩形(因为模糊默认值为0%):
使用fuzz=2
运行修改后的代码将替换第一个和第二个白色矩形,但不会替换第三个:
使用fuzz=6
运行修改后的代码将替换所有三个白色矩形:
您可以调整fuzz
值(百分比)以匹配您需要替换的颜色。
有关fuzz here的更多信息。