0

我正在尝试用绿色替换白色,但下面的代码不会改变颜色。

代码:

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我试图改变复合重力和运算符,但没有任何改变。

我该做什么?

4

1 回答 1

3

如果您必须替换完全白色的颜色(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值(百分比)以匹配您必须替换的颜色。

更多关于 fuzz的信息在这里

于 2017-04-09T12:27:45.913 回答