ハッシュ値を比較しよう
指針
- ファイルのハッシュ値を取得する
- もう一方のファイルと比較する
- 同一であれば一方を削除する
ソースコード
利点
- 標準ライブラリのみで書けるし動かせる
- アルゴリズムが簡素である
- 約14500ファイルのMD5を取得するのに326sec (44.48 files/sec)
- それらを比較するのに279sec (51.98 files/sec)
欠点
- ファイルの変化に圧倒的に弱い (1pxでも書き換えたり、プロパティを編集したりすると同一でないとみなされる)
- サムネイル、低画質版等に対応していない
- ハッシュ値の衝突の危険性がなきにしもあらず
まとめ
- ハッシュ値比較はファイルの変化が全くないときに有効
- ただし万が一衝突が起こったらつらくなる
- 同じ画像のサムネイルを判定することはできない
- そういった点は別途実装していかなければならない
画像のヒストグラムを比較しよう
指針
- ファイルのヒストグラムを取得する
- もう一方のファイルと比較する
- 同一であれば一方を削除する
ソースコード
https://gist.github.com/ee79149ca9737137277d
利点
- アルゴリズムが簡素である
- プロパティを編集していても大丈夫
欠点
- サムネイル、低画質版等に対応していない
- やや低速
まとめ
- やはりサムネイルや低画質版には対応しきれない