我试图用绿色代替白色,但是下面的代码不会改变颜色。
代码:
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 I试图改变复合重力和操作符,但是没有什么变化。
我该怎么办?
发布于 2017-04-09 12:27:45
如果您必须替换一个完全白色的颜色(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值。左边的第一个矩形填充纯白色,而第二个和第三个填充非常浅的灰色,它们非常类似于白色:

原始代码将只替换左边的第一个白色矩形(因为fuzz默认值为0%):

使用fuzz=2运行修改后的代码将替换第一个和第二个白色矩形,而不是第三个:

使用fuzz=6运行修改后的代码将替换所有三个白色矩形:

您可以调整fuzz值(百分比)以匹配必须替换的颜色。
更多关于毛绒这里的信息。
https://stackoverflow.com/questions/42700059
复制相似问题