Shotwell如何检测重复?

用谷歌找不到任何答案。 当两次导入相同的图片文件夹时,Shotwell将跳过重复的照片。 但它如何检测重复? 如果我导入两个不同的图片文件夹,其中一些由于某种原因具有相同的名称,那么Shotwell会认为它们是重复的吗? 或者它是否也会影响文件大小,不太可能造成错误的重复? 或者是否对图片进行哈希处理,制作虚假副本几乎不可能?

我相信它比简单的名字更先进,我只是尝试过。 事实上,它根本不是基于名称。

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

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 

导入文件夹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. 

它导入的两个是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 

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. 

成功导入的是yellow.pngyellow.pngpink2.png

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

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

事实上,我刚刚在这里发现了这篇文章:

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

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

 imported_full_md5_table.has_key(prepared_file.full_md5)) { 

听起来它使用MD5哈希!

从这里获取目录树的形状