Shotwell 如何检测重复?

Shotwell 如何检测重复?

用谷歌搜索找不到任何答案。当两次导入同一个文件夹中的图片时,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.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.

成功引进的有blue.pngyellow.pngpink2.png

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

它的准确度非常高,在 A4 纸上,只要将 1 个像素的颜色从绿色改为黄色,它就不会将其检测为重复。非常准确!

事实上,我刚刚发现了这个帖子这里

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

事实上在源代码,第 732 行是这样的:感谢@Jeremie Miserez

imported_full_md5_table.has_key(prepared_file.full_md5)) {

听起来它使用了 MD5 哈希!

目录树的形状来自此处

我的代词是“他”

相关内容