首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magick.net比较

Magick.net比较
EN

Stack Overflow用户
提问于 2015-03-31 02:15:19
回答 1查看 3.6K关注 0票数 2

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

代码语言:javascript
复制
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。我尝试了几种不同的文件和文件格式,结果是相同的。

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

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 11:46:35

用于compare的CLI last example方法是:

代码语言:javascript
复制
compare img1.png img2.png delta.png

这没有显式地设置-compose方法。这意味着,compare使用了它的默认组合方法,即SrcOver。因此,命令更短,但与

代码语言:javascript
复制
compare img1.png img2.png -compose SrcOver delta.png

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

代码语言:javascript
复制
compare -list compose

它应该返回类似于以下内容的列表:

ChangeMask混合蓝光ColorBurn ColorDodge彩色化CopyBlack CopyBlue CopyCyan CopyGreen复制CopyMagenta CopyOpacity CopyRed CopyYellow DarkenIntensity DivideDst DivideSrc Dst差分置换溶解畸变DstAtop DstIn DstAtop DivideSrc DstAtop DstIn DstOut Mathematics DstAtop DstIn DstOut Mathematics Hue轻量级en21 en23#Lumized数学en25 en27#在en29#+替换饱和屏幕Src en32 en34 Xor Xor

要真正了解这些方法的效果,可以这样做(在Mac或Linux cmd/*.bat上,您必须自己想出):

代码语言:javascript
复制
for i in $(compare -list compose); do
  compare img1.png img2.png -compose ${i} composed-with-${i}-delta.png
done

您会发现有一些有趣的效果需要发现:)

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

https://stackoverflow.com/questions/29359487

复制
相关文章

相似问题

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