用谷歌搜索找不到任何答案。当两次导入同一个文件夹中的图片时,Shotwell 会跳过重复的照片。但它如何检测重复?如果我导入两个不同的文件夹中的图片,其中一些出于某种原因具有相同的名称,Shotwell 会认为它们是重复的吗?或者它还会考虑文件大小,从而不太可能出现假重复?或者它是否会对图片进行哈希处理,从而几乎不可能出现假重复?
答案1
我相信它比简单名称更高级,我刚刚尝试过。事实上,它似乎根本不基于名称。
因此我创建了以下内容:
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.
成功引进的有blue.png
、yellow.png
和pink2.png
。
因此我假设它使用了散列算法。
它的准确度非常高,在 A4 纸上,只要将 1 个像素的颜色从绿色改为黄色,它就不会将其检测为重复。非常准确!
事实上,我刚刚发现了这个帖子这里:
一旦修复此错误,Shotwell 将(专门)使用文件的完整 MD5 哈希来执行重复检查,这是一种非常准确的查找重复项的方法。
事实上在源代码,第 732 行是这样的:感谢@Jeremie Miserez
imported_full_md5_table.has_key(prepared_file.full_md5)) {
听起来它使用了 MD5 哈希!
我的代词是“他”