Magick.NET 如何使用 .ColorFuzz 作为图像比较的像素容差
Magick.NET How to use .ColorFuzz as pixel tolerance for image comparison
我是图片对比区的新手
我正在使用C#和Magick.NET(Magick.NET-Q16-AnyCPU版本:7.14.5)来对比截图。
使用 .ColorFuzz 我想实现某种像素容差,以忽略屏幕截图差异。
这是我的代码:
double fuzzLevel = 0;
MagickImage baseHeaderView = new MagickImage(@"C:\githubActual.png");
MagickImage actualHeaderView = new MagickImage(@"C:\githubBase.png");
MagickImage diffView = new MagickImage();
baseHeaderView.ColorFuzz = (Percentage)fuzzLevel;
baseHeaderView.Compare(actualHeaderView, ErrorMetric.Absolute, diffView);
baseHeaderView.Composite(diffView, CompositeOperator.Over);
Console.WriteLine(baseHeaderView.GetAttribute("distortion"));
baseHeaderView.Write(@"C:\diffView.png");
这是我的 base and actual 屏幕截图。
This 是 fuzzLevel 变量 = 0 时的差异图像。
在这种情况下,baseHeaderView.GetAttribute("distortion") 将 return 614 个不同的像素。
当我将 fuzzLevel 更改为 75 时,baseHeaderView.GetAttribute("distortion") returns 0 个不同的像素,但 diff 图像仍然包含 highlighted differences
所以,我的问题是,为什么当失真等于 0 时,diff 图像中仍然存在突出显示的差异。我做错了什么,或者这是预期的行为?
可以更改上面的代码,所以当失真为 0 时,diff 图像将不包含任何突出显示的差异?
您似乎在 ImageMagick 库中发现了错误。 Magick.NET 的下一版本将解决您的问题。下次随时在这里打开一个问题:https://github.com/dlemstra/Magick.NET/issues
我是图片对比区的新手
我正在使用C#和Magick.NET(Magick.NET-Q16-AnyCPU版本:7.14.5)来对比截图。
使用 .ColorFuzz 我想实现某种像素容差,以忽略屏幕截图差异。
这是我的代码:
double fuzzLevel = 0;
MagickImage baseHeaderView = new MagickImage(@"C:\githubActual.png");
MagickImage actualHeaderView = new MagickImage(@"C:\githubBase.png");
MagickImage diffView = new MagickImage();
baseHeaderView.ColorFuzz = (Percentage)fuzzLevel;
baseHeaderView.Compare(actualHeaderView, ErrorMetric.Absolute, diffView);
baseHeaderView.Composite(diffView, CompositeOperator.Over);
Console.WriteLine(baseHeaderView.GetAttribute("distortion"));
baseHeaderView.Write(@"C:\diffView.png");
这是我的 base and actual 屏幕截图。
This 是 fuzzLevel 变量 = 0 时的差异图像。 在这种情况下,baseHeaderView.GetAttribute("distortion") 将 return 614 个不同的像素。
当我将 fuzzLevel 更改为 75 时,baseHeaderView.GetAttribute("distortion") returns 0 个不同的像素,但 diff 图像仍然包含 highlighted differences
所以,我的问题是,为什么当失真等于 0 时,diff 图像中仍然存在突出显示的差异。我做错了什么,或者这是预期的行为?
可以更改上面的代码,所以当失真为 0 时,diff 图像将不包含任何突出显示的差异?
您似乎在 ImageMagick 库中发现了错误。 Magick.NET 的下一版本将解决您的问题。下次随时在这里打开一个问题:https://github.com/dlemstra/Magick.NET/issues