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.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.
Run Code Online (Sandbox Code Playgroud)
成功导入的有blue.png
、yellow.png
和pink2.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 哈希!
我的代词是他/他