如何找到重复的照片?

我可以用什么来查找重复的照片,包括已经调整大小的照片?

2相关链接:http://photo.stackexchange.com/questions/26026/how-can-i-find-duplicate-photos-in-about-100gb-of-data - unor
1另请参阅http://askubuntu.com/a/480712 - belacqua
7个回答

digiKam 通过软件中心安装

将所有照片添加到您的收藏中。在菜单中选择工具/查找重复项。这将在整个收藏中查找重复项。

findimagedupes 通过软件中心安装

一个命令行工具。在命令行上传递您想要比较的所有图像。

Geeqie(以前称为GQview通过软件中心安装

在菜单中,选择文件/查找重复。将图像文件拖放到重复窗口中。您可以拖放目录以递归添加其内容。为了进行图像的视觉比较,下拉菜单中有特定的非默认选项。"自定义"相似度级别允许仅限于最高相似度程度的配对,但必须在首选项中设置为99。即使如此,它对某些类型的图像(如线条艺术)至少在某种程度上并不完美。遗憾的是,它没有提供具有合理标准的自动选择机制,例如分辨率、日期或其他。自动选择似乎只是随机选择找到的第一张图像作为要保留的参考图像。删除多个图像可能会非常缓慢,因为它尝试在每次删除时更新结果计数。


这三个工具都可以找到视觉上的重复项,而不仅仅是完全相同的文件。

8我发现Geeqie是最好的选择。它拥有强大的搜索模式(名称、校验和、大小等),强大的图像相似度扫描功能,详细的重复文件信息,简洁的用户界面,并且无需先将图像添加到集合或相册中。唯一的缺点是重复文件查找功能隐藏在文件菜单下,您需要从Nautilus(或其他文件管理器)拖放图像/文件夹以进行搜索。除此之外,它能够胜任工作并且表现出色。 - japzone
3Geeqie 可以找到相似的图片并且效果还不错,但是我发现它在查找精确匹配时有点慢,并且删除重复项比较繁琐。 - Wernight
另一个选择(似乎相当不错)是这个工具,也被称为findimagedupes,但与在Sourceforge上托管的工具无关。 - Winny
Digikam有一个令人惊叹的重复文件查找界面。我强烈推荐使用。 - wbkang
1@wbkang 如何在Digikam中批量删除多个重复项?如何确保只删除较低(或相等)分辨率的重复项? - nutty about natty
findimagedupes 运行良好。 - Digger
我刚刚注意到一个问题,Digikam实际上从原始位置不会删除重复文件。例如,如果你指定一个图像文件夹让它搜索重复文件,Digikam会找到这些重复文件,但是如果你尝试删除它们,它只会将其移动到一个内部的“垃圾箱”文件夹,而不是真正删除原始文件。 - Raleigh L.

FSlint 安装FSlint

fslint是一个可以通过md5sum找到任何类型的重复文件的图形化程序。如果图像不完全相同,它们将不会被标记为重复文件。下面的图片显示了我下载目录中一堆重复的pdf文件:

enter image description here

您可以更改高级搜索参数,按文件类型进行搜索,并仅限于图像。这是通过更改“额外查找参数”作为find命令选项来完成的。例如,在这里我只在相同路径下的“下载”文件夹中寻找*.jpg文件:

enter image description here

fdupes 安装 fdupes

fdupes 是一个等效的基于命令行的工具。两者都可以在软件库中找到。


14请注意,我怀疑这些程序能够找到调整大小后的重复文件。 - Vadim Peretokin
@Vadi,这是一个不同且更复杂的问题。Tineye 是一种图像识别技术,不依赖于元数据、哈希等(它可以识别相似的图像),但这是一个在线服务。他们提供了一个API,但我还不知道有哪些应用程序利用了这个功能。另一个复杂之处在于,您并不总是希望删除所有相似的图像,例如如果您编辑照片但想保留原始副本。删除完全相同的重复图像要安全得多。 - John Lyon
5OP明确表示“包括已调整大小的照片”,所以这不是一个答案。 - Calimo

fdupes

你可以使用一个命令行工具叫做fdupes来查找重复文件(详见man fdupes)。我不知道有没有办法找到已经调整大小的“重复”文件。一个能够实现这个功能的程序需要一种智能算法来分析图像内容,因为当图像被调整大小时,其数据会发生变化,所以传统的重复文件查找方法无法奏效。

要在当前所有支持的Ubuntu版本中安装fdupes,请打开终端并输入以下命令:

sudo apt install fdupes

fdupes 也会忽略不同目录中的重复文件;比如说,你在生日派对/文件夹和家庭杂物/文件夹中有两份相同的照片... "fdupes -fr ." 会忽略这个重复文件。 - lrkwz
3fdupes无法处理已调整大小的重复文件,也无法处理元数据的更改。 - Calimo

dupeGuru Picture Edition非常好用,值得一试。

他们有一个Launchpad PPA,可以使用以下命令从中安装dupeguru(新的全合一包)或dupeguru-pe(旧的图片版包):

sudo add-apt-repository ppa:hsoft/ppa
sudo apt-get update
sudo apt-get install dupeguru

1看起来dupeGuru现在没有单独的版本了。它的功能很好,尽管用户界面可能还有改进的空间。如果你使用Arch,它也可以在AUR中找到。 - user31389
这个已经非常过时了,PPA中的最后一个版本是xenial,网站已经无法使用了... - jaromrax

imgSeek 安装imgseek

imgSeek可以找到重复的图片,也可以找到相似的图片(因此它应该能够找到调整大小的照片、文件名和元数据不同的照片),甚至可以根据草图搜索照片。它有桌面版和服务器版可用。

虽然我自己还没有实际尝试过。


仅适用于Ubuntu 10.04,尽管12.04有一个Perl库。 - drevicko
服务器版本的 isk-daemon 在12.04上运行,尽管我发现我必须从源代码安装(根据安装页面使用pip install无效)。 - drevicko

Visipics

Visipics是一个免费的Windows应用程序,但在Linux上通过Wine也能很好地运行(它在处理重复文件的排序方面比geeqie/gqview要好得多(geeqie的结果根本无法进行“排序”))。

你可以根据诸如较小的文件大小、非压缩类型、较低的分辨率等条件来自动选择图像(尽管它不会做相反的操作,你需要手动完成,这与在geeqie上进行操作并没有太大区别,只是选择不需要按住Shift/Ctrl键),甚至可以优先处理文件夹(但文件夹优先级是最后的优先级)。

然而,你必须注意符号链接——它有可能“随机”选择将符号链接保存为“副本”,同时删除实际文件。这真是遗憾。


我写了这个Python脚本来查找视觉上相似的图像,并删除除最大的图像之外的所有图像。
它在内部使用findimagedupes来查找重复的图像。
您可以使用-d和-r选项调用它以适应您的用例,这将:
- 不删除(较小尺寸的视觉上相似)文件。 - 输出一个名为"dups.txt"的文件,其中包含重复的(准确来说是视觉上相似的)文件。

https://github.com/AnirudhKishan/DeleteVisuallyRedundant