C#实现图片对比-支持图片旋转

前言

虽然已经正式转JAVA了,但最近发现一个特别好的开源项目masuit,不仅提供很多简便的功能,还有图像的一些特殊操作功能。

下面就实现一个简单图像对比。

实现对比

代码如下,实现一个可以对比翻转,旋转的图片。

`

using Masuit.Tools.Media;

using SixLabors.ImageSharp;

using System.Diagnostics;

using SixLabors.ImageSharp.Processing;

var sw = Stopwatch.StartNew();

string img1 = "img/img1.png";

string img2 = "img/img2.png";

var hasher = new ImageHasher();

var hash1 = hasher.DifferenceHash256(img1);

var hashList = new List<ulong[]>();

hashList.Add(hash1);

var sim = 0.85;

using (var image1 = SixLabors.ImageSharp.Image.Load<SixLabors.ImageSharp.PixelFormats.Rgba32>(img1))

{

var actions = new List<Action>();
//翻转委托
actions.Add(() =>
{
    using Image<SixLabors.ImageSharp.PixelFormats.Rgba32> clone = image1.Clone(c => c.Flip(FlipMode.Horizontal));
    var flipH = clone.DifferenceHash256();
    hashList.Add(flipH);
});
actions.Add(() =>
{
    using var clone = image1.Clone(c => c.Flip(FlipMode.Vertical));
    var flipV = clone.DifferenceHash256();
    hashList.Add(flipV);
});
//选择委托
actions.Add(() =>
{
    using var clone = image1.Clone(c => c.Rotate(90));
    var rotate90 = clone.DifferenceHash256();
    hashList.Add(rotate90);
});
actions.Add(() =>
{
    using var clone = image1.Clone(c => c.Rotate(180));
    var rotate180 = clone.DifferenceHash256();
    hashList.Add(rotate180);
});
actions.Add(() =>
{
    using var clone = image1.Clone(c => c.Rotate(270));
    var rotate270 = clone.DifferenceHash256();
    hashList.Add(rotate270);
});
Parallel.Invoke(actions.ToArray());

var hash2 = hasher.DifferenceHash256(img2);
var similar = hashList.Select(h => ImageHasher.Compare(hash2, h)).Max();
if (similar >= sim)
{
    Console.WriteLine($"是一样的图片 similar:{similar}");
}
else
{
    Console.WriteLine($"不是一样的图片  similar:{similar}");
}
using (var image2 = SixLabors.ImageSharp.Image.Load<SixLabors.ImageSharp.PixelFormats.Rgba32>(img2))
{
    Console.WriteLine($"比较图片信息--分辨率:{image2.Width}x{image2.Height},大小:{new FileInfo(img2).Length / 1024}KB");
}

Console.ReadKey();

}

`

测试运行

这里使用三张图片对比,如下:

第一张是原图,第二张是略微裁剪边缘的图片,第三张是旋转图片。

1图和2图比较结果如下:

1图和3图比较结果如下:

代码简单实用,非常值得使用。

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!

若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/18053616.html