首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用Magick.Net替换颜色

不能用Magick.Net替换颜色
EN

Stack Overflow用户
提问于 2017-03-09 16:05:25
回答 1查看 2.4K关注 0票数 0

我试图用绿色代替白色,但是下面的代码不会改变颜色。

代码:

代码语言:javascript
复制
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试图改变复合重力和操作符,但是没有什么变化。

我该怎么办?

EN

回答 1

Stack Overflow用户

发布于 2017-04-09 12:27:45

如果您必须替换一个完全白色的颜色(R=255、G=255、B=255或#ffffff (如果您愿意),您的代码就可以工作)。

如果您试图替换与白色相似(但不完全相同)的颜色,则可以使用ColorFuzz引入公差。

要实现这一点,您可以向您的方法添加一个新的fuzz参数,如下所示:

代码语言:javascript
复制
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值(百分比)以匹配必须替换的颜色。

更多关于毛绒这里的信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42700059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档