Paperclipで保存した画像ファイルの重複をRmagicでチェックする
はじめに
ユーザがアップロードした画像をPaperclipで保持しているアプリケーションは、割と多いと思います。これら画像をアプリケーション内で管理したいと考えた時、上記の通り画像間の差分を取得したいという要求は以外と多いのではないでしょうか。
実装
画像の比較にはMagick#compositeメソッドを利用します。また、比較対象の読み込みにはMagick::Image#readとPaperclip#io_adaptersを利用します。重複のチェックも含めたコードは、以下の通りとなります。
上記、画像の同一性を判定するのに利用している値、5000というしきい値については適当でございます。それぞれの環境に適合した値を設定するのがよろしいかと存じます。写真や絵画など、ものによって求められる値が変わってまいります。