Shotwell 如何检测重复项?

Hub*_*bro 4 shotwell photo-management

用谷歌找不到任何答案。两次导入同一文件夹的图片时,Shotwell 将跳过重复的照片。但是它如何检测重复项?如果我导入两个不同的图片文件夹,其中一些文件夹由于某种原因具有相同的名称,Shotwell 会认为它们是重复的吗?或者它是否也考虑了文件大小,从而不太可能出现虚假重复?或者它是否对图片进行了哈希处理,从而使虚假重复几乎不可能?

Tim*_*Tim 11

我相信它比简单的名字更高级,我刚刚尝试过。事实上,它似乎根本不基于名称。

所以我刚刚创建了以下内容:

TestDir
  ?
  ?? blue.png #Blue A4 page
  ?? blue2.png #Blue A4 page
  ?? green.png #Blue A4 page
  ?? red.png #Yellow A4 page
  ?? yellow.png #Yellow A4 page
  ?? yellow2.png #Yellow A4 page
  ? TestDir2
       ?
       ?? yellow.png #Blue A4 page
       ?? yellow.png #Blue A4 page
Run Code Online (Sandbox Code Playgroud)

导入文件夹 TestDir(也从任何子目录导入)。这是通知:

6 duplicate photos were not imported:
/home/tim/Pictures/Test/red.png
/home/tim/Pictures/Test/yellow2.png
/home/tim/Pictures/Test/green.png
/home/tim/Pictures/Test/blue2.png
(and 2 more)

2 photos successfully imported.
Run Code Online (Sandbox Code Playgroud)

它导入的两个是blue.png 和yellow.png。这是因为它们是首先创建的(如果有重复,它会选择最旧的)。

下一个测试证实了这一点:

TestDir
  ?
  ?? blue.png #Blue A4 page
  ?? blue2.png #Blue A4 page
  ?? green.png #Blue A4 page (sorry OCD people)
  ?? red.png #Yellow A4 page (sorry OCD people)
  ?? yellow.png #Yellow A4 page
  ?? yellow2.png #Yellow A4 page
  ?? pink2.png #Pink A4 page 
  ?? pink.png #Pink A4 page
  ? TestDir2
       ?
       ?? yellow.png #Blue A4 page
       ?? yellow.png #Blue A4 page
Run Code Online (Sandbox Code Playgroud)

pink2.pngpink.png已创建。pink2.png首先创建,然后pink.png

8 duplicate photos were not imported:
/home/tim/Pictures/Test/red.png
/home/tim/Pictures/Test/yellow2.png
/home/tim/Pictures/Test/green.png
/home/tim/Pictures/Test/blue2.png
(and 4 more)

3 photos successfully imported.
Run Code Online (Sandbox Code Playgroud)

成功导入的有blue.pngyellow.pngpink2.png

因此,我假设它使用散列算法。

它足够准确,在 A4 页面上仅将 1 个像素的颜色从绿色更改为黄色,导致它不会被检测为重复。那么准确!

事实上,我刚刚在这里找到了这篇文章:

修复此错误后,Shotwell 将(仅)使用文件的完整 MD5 哈希值来执行重复检查,这是一种非常准确的查找重复项的方法。

实际上在源代码中,第 732 行是这样的:Kudos @Jeremie Miserez

imported_full_md5_table.has_key(prepared_file.full_md5)) {
Run Code Online (Sandbox Code Playgroud)

听起来它使用 MD5 哈希!

目录树的形状从这里

我的代词是他/他