C# Magick.net比较
我正在使用Magick.NET(Q16-x64 v7.0.0.0011)来比较图像。当我使用命令行版本的ImageMagick并在没有任何特殊选项的情况下进行比较时,它会给出一个图像,其中相同的部分显示为亮显背景,不同的部分显示为红色。我正试图在Magick.NET中复制这种行为。我尝试了以下代码:C# Magick.net比较,c#,.net,compare,imagemagick,magick.net,C#,.net,Compare,Imagemagick,Magick.net,我正在使用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"; va
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”运行命令行版本,您可能会得到这样的结果。根据SetLowlightColor,差异是SetHighlightColor设置为的任何颜色,图像的其余部分是纯色。我尝试了几种不同的文件和文件格式,得到了相同的结果
参考以下问题答案中的“图解示例”:
我得到的是第一个例子。
我想要的是最后一个例子
任何帮助都将不胜感激。用于的CLI
compare
方法是:
compare img1.png img2.png delta.png
这没有明确设置-compose
方法。这意味着,compare
使用了默认的合成方法,即SrcOver
。因此命令较短,但与
compare img1.png img2.png -compose SrcOver delta.png
如果您有兴趣测试所有可用的合成方法进行比较,可以运行
compare -list compose
它应返回类似以下内容的列表:
顶部混合模糊凹凸贴图更改遮罩清晰颜色燃烧颜色减淡着色CopyBlack CopyBlue CopyCyan CopyGreen CopyMagenta CopyOpacity CopyRed CopyYellow变暗暗暗暗度分光度分光度差置换溶解扭曲DSTAPTOP DstIn DstOut DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTOWN DSTO线性调制线性发光数学最小DST最小Src调制模块ADD模块Subtract乘法无输出叠加在PegtopLight PinLight上加上替换饱和屏幕软光Src Src Src TOP Src IN Src Out Src Over LIVELIGHT Xor
要真正了解这些方法的效果,请尝试以下方法(在Mac OS X或Linux上--DOScmd
/*.bat
您必须自己想出):
你会发现有很多有趣的效果需要发现:)你知道ImageMagick 7.0.0还没有正式发布吗?现在可用的只是用于测试的预备测试。所以要知道,有些事情可能不会像预期的那样起作用!谢谢你的信息。Magick.NET的开发人员在Magick.NET论坛上回答了我的问题。我没有设置属性,但是当前版本的ImageMagick on Compare中也有一个bug。一旦bug被解决,开发者将在这里发布一个答案。我非常感谢这些有用的信息。我会投票支持你的答案,但在网站上还没有足够的声誉。@Craig87762:我不知道你需要任何声誉来支持自己问题的答案…:(@Craig:所以你只能“接受”你自己问题的答案?是的,我觉得这也很奇怪。它说我需要15个声誉来提升任何东西。我还没有尝试过,但希望它至少能让我这么做。
for i in $(compare -list compose); do
compare img1.png img2.png -compose ${i} composed-with-${i}-delta.png
done