A simple algorithm to identify duplicate photographs in a directory using fingerprinting.
package require vectcl
package require vectcl::tk
package require Tk
package require Img
proc findduplicates {flist} {
set matches {}
set photo [image create photo]
foreach fn $flist {
puts "Processing $fn" ;# for progress
$photo read -shrink $fn
vexpr {
img = fromPhoto(photo)
fprint = int(sum(sum(img[0:-1:10,0:-1:10,:])))
}
dict lappend matches $fprint $fn
}
return [dict values [dict filter $matches script {k v} {
expr {[llength $v]>1}
}]]
}
set liste [glob /Users/chris/Foto/tmp/*.jpg]
puts [join [findduplicates $liste] \n]