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.png
和pink.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.png
, yellow.png
和pink2.png
。
因此我假设它使用散列算法。
它足够准确,在A4页面上仅将1个像素的颜色从绿色变为黄色,导致它不会被检测为重复。 那么相当准确!
事实上,我刚刚在这里发现了这篇文章:
修复此错误后,Shotwell将使用(专门)文件的完整MD5哈希值来执行重复检查,这是查找重复项的非常准确的方法。
实际上在源代码中 ,第732行是: Kudos @ Jeremie Miserez
imported_full_md5_table.has_key(prepared_file.full_md5)) {
听起来它使用MD5哈希!
从这里获取目录树的形状