【问题标题】:How to check for duplicate images ? C#如何检查重复的图像? C#
【发布时间】:2017-05-02 07:00:23
【问题描述】:

所以伙计们,这就是我所拥有的。

我有一个包含大约 30k 张图片的 1 个文件夹(很久以前的旧备份) 第二个文件夹用作当前备份。

所以我只是想检查第一个文件夹中是否有我在第二个文件夹中没有的图片.. 如果我在文件夹 1 中找到了我已经在文件夹 2 中的图片,那么它将被删除文件夹 1.

我想也许我应该将文件夹 1 中的 1 张图片的磁盘大小与文件夹 2 中的所有图片进行比较。(带有 2 个 for 循环)

但我看到我有 2 张不同的图片,它们的大小完全相同(磁盘上的大小)。 所以我不能真正使用它。

有人知道我该怎么做吗? (请记住,我在文件夹 1 中有大约 30k 张照片,所以算法应该是有效的)ץ

同一张图片有不同的哈希值。 :

            using (var md5 = MD5.Create())
        {
            using (var stream = File.OpenRead("C:/Users/Sam/Desktop/1.jpg"))
            {
                Console.WriteLine(BitConverter.ToString(md5.ComputeHash(stream)));
            }
           using (var stream2 = File.OpenRead("C:/Users/Sam/Desktop/2.jpg"))
            {
                Console.WriteLine(BitConverter.ToString(md5.ComputeHash(stream2)));
            }
        }

嗨,我确实使用了这个算法: Algorithm to compare two images in C#

但这太慢了。 (将 1 张图像与 100 张其他图像进行比较大约需要 2-3 秒,因此将永远比较所有图像(大约 30k))..

【问题讨论】:

标签: c# image console compare


【解决方案1】:

这里有几个进行图像比较的开源 C# 项目。

https://github.com/xnafan/Simple-image-comparison

https://github.com/ukushu/ImgComparator

【讨论】:

    【解决方案2】:

    计算每张图片的哈希值并使用哈希值来比较文件夹

    【讨论】:

    • 对于同一张图片,我得到了不同的哈希值。我编辑帖子以显示我尝试过的内容
    • 它们真的是相同的图片,还是它们可能具有不同的分辨率或不同的格式?如果它们完全相同,则哈希值也必须相同..
    • 嗯,这是一张磁盘上大小完全相同的图片。和她自己的照片真的是一样的(我只拍了她 1 次,就像 5 年前一样..)我真的不知道怎么做,但大小不同(只有磁盘上的大小是一样的)。也许你还能想到别的什么?
    • 图片是否包含元数据?也许在一张图片中元数据被改变了?
    • 我想也许这也是发生的事情。我该如何解决?
    猜你喜欢
    • 2018-09-22
    • 2018-05-04
    • 2013-08-15
    • 2016-05-05
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 1970-01-01
    相关资源
    最近更新 更多