【问题标题】:Magick.net CompareMagick.net 比较
【发布时间】:2015-05-17 04:55:53
【问题描述】:

我正在使用 Magick.NET (Q16-x64 v7.0.0.0011) 来比较图像。当我使用 ImageMagick 的命令行版本并在没有任何特殊选项的情况下进行比较时,它会给出一个图像,其中相同部分显示为浅色背景,差异显示为红色。我试图在 Magick.NET 中复制这种行为。我尝试了以下代码:

var image1Path = @"D:\Compare Test\image1.jpg";
var image2Path = @"D:\Compare Test\image2.jpg";

var diffImagePath = @"D:\Compare Test\imageDiff.jpg";

using (MagickImage image1 = new MagickImage(image1Path))
using (MagickImage image2 = new MagickImage(image2Path))
using (MagickImage diffImage = new MagickImage())
{
    image1.Compare(image2, ErrorMetric.Absolute, diffImage);
    diffImage.Write(diffImagePath);
}

我最终得到的是一个只显示差异的文件。如果您使用“-compose src”运行命令行版本,这似乎是您会得到的。不同之处在于 SetHighlightColor 设置为什么,而图像的其余部分是根据 SetLowlightColor 的纯色。我尝试了几种不同的文件和文件格式,结果相同。

在以下 SO 问题的答案中参考“图解示例”:Diff an Image 我得到的是第一个例子。 我想要的是最后一个例子。

任何帮助将不胜感激。

【问题讨论】:

  • 你知道ImageMagick 7.0.0 还没有正式发布吗?现在可用的只是用于测试的初步测试版。所以要知道,有些事情可能不会按预期工作!
  • 感谢您提供此信息。 Magick.NET 的开发人员在 Magick.NET 论坛上回答了我的问题。我错过了设置属性,但在比较的 ImageMagick 的当前版本中也有一个错误。一旦错误解决,开发人员将在此处发布答案。

标签: c# .net compare imagemagick magick.net


【解决方案1】:

用于 last example 的 CLI compare 方法是:

compare img1.png img2.png delta.png

这没有明确设置-compose 方法。这意味着,compare 使用了它的默认组合方法,即SrcOver。所以命令更短,但相当于

compare img1.png img2.png -compose SrcOver delta.png

如果您有兴趣测试所有可用的合成方法进行比较,您可以运行

compare -list compose

它应该返回一个类似这样的列表:

Atop Blend Blur Bumpmap ChangeMask Clear ColorBurn ColorDodge Colorize CopyBlack CopyBlue CopyCyan CopyGreen Copy CopyMagenta CopyOpacity CopyRed CopyYellow Darken DarkenDarkenDist DivideSrc Dst Difference Displace Dissolve Distort DstAtop DstIn DstOut DstOver Exclusion HardLight HardMix Hue In Lighten LightenIntensity LinearBurn LinearDodge LinearLight Luminize Modulus MinusDst MinusSrc ModulusSubtract Multiply None Out Overlay Over PegtopLight PinLight Plus Replace Saturate Screen SoftLight Src SrcAtop SrcIn SrcOut SrcOver VividLight Xor

要真正查看这些方法的效果,试试这个(在 Mac OS X 或 Linux -- DOS cmd/*.bat 你必须上来和你自己):

for i in $(compare -list compose); do
  compare img1.png img2.png -compose ${i} composed-with-${i}-delta.png
done

你会发现有很多有趣的效果有待发现:)

【讨论】:

  • 我很欣赏这些有用的信息。我会投票支持你的答案,但在网站上还没有足够的声誉。
  • @Craig87762:我不知道你需要任何名声来支持自己的问题的答案... :(
  • @Craig:所以你只能'接受'回答你自己的问题?
  • 是的,我也觉得这很奇怪。它说我需要 15 声望来支持任何事情。
  • 还没试过,但希望它至少能让我这样做。
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 2013-12-29
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
相关资源
最近更新 更多