我使用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。我尝试了几种不同的文件和文件格式,结果是相同的。
请参考以下问题的答案中的“插图示例”:Diff an Image,我得到的是第一个示例。我想要的是最后一个例子。
任何帮助都将不胜感激。
发布于 2015-03-31 11:46:35
用于compare的CLI last example方法是:
compare img1.png img2.png delta.png这没有显式地设置-compose方法。这意味着,compare使用了它的默认组合方法,即SrcOver。因此,命令更短,但与
compare img1.png img2.png -compose SrcOver delta.png如果您有兴趣测试ALL可用的组合方法以进行比较,则可以运行
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上,您必须自己想出):
for i in $(compare -list compose); do
compare img1.png img2.png -compose ${i} composed-with-${i}-delta.png
done您会发现有一些有趣的效果需要发现:)
https://stackoverflow.com/questions/29359487
复制相似问题