私が歌川です

@utgwkk が書いている

Pythonで、フォルダ内の重複する画像を自動的に削除する方法

ハッシュ値を比較しよう

指針

  1. ファイルのハッシュ値を取得する
  2. もう一方のファイルと比較する
  3. 同一であれば一方を削除する

ソースコード

利点

  • 標準ライブラリのみで書けるし動かせる
  • アルゴリズムが簡素である
  • 約14500ファイルのMD5を取得するのに326sec (44.48 files/sec)
  • それらを比較するのに279sec (51.98 files/sec)

欠点

  • ファイルの変化に圧倒的に弱い (1pxでも書き換えたり、プロパティを編集したりすると同一でないとみなされる)
  • サムネイル、低画質版等に対応していない
  • ハッシュ値の衝突の危険性がなきにしもあらず

まとめ

  • ハッシュ値比較はファイルの変化が全くないときに有効
  • ただし万が一衝突が起こったらつらくなる
  • 同じ画像のサムネイルを判定することはできない
  • そういった点は別途実装していかなければならない

画像のヒストグラムを比較しよう

指針

  1. ファイルのヒストグラムを取得する
  2. もう一方のファイルと比較する
  3. 同一であれば一方を削除する

ソースコード

https://gist.github.com/ee79149ca9737137277d

gistee79149ca9737137277d

利点

欠点

  • サムネイル、低画質版等に対応していない
  • やや低速

まとめ

  • やはりサムネイルや低画質版には対応しきれない

参考