例えば、当社で扱う35mmのデータサイズを想定して、だいたい4MBと仮定すると、サムネイルは数kB~10kBなので1/1000~1/500程度しかありません。500倍~1000倍の速さで読み込めるということになります。 確かに速い。
これを利用しないわけにはいきません。サムネイルを埋め込んでしまいましょう。こういう処理はGUIでちまちまやるよりも、Unix風にバッチ処理で一気にやってしまうのがよいです。googleで探してみるとjhead、ExifTool、Exiv2などが挙がってきました。まずはjheadから調査を始めてExifToolで目的を達成できたのでそれでよしとしました。もしかしたら調べていないExiv2が一番便利かもしれません。
それではExifToolでサムネイルを操作してみましょう。
画像ファイルdata.jpg
にどんなサムネイルが埋め込まれているか
>exiftool.exe -ThumbnailImage data.jpg埋め込まれている場合は
Thumbnail Image : (Binary data xxxx bytes, use -b option to extract)とう表示されxxxxバイトのサムネイル画像が埋め込まれていることが分かります。 埋め込まれていなければ何も表示されません。 次に埋め込まれている画像を抽出してみます。上でコメントされているように
-b
オプションを使います。
>exiftool.exe -ThumbnailImage -b data.jpg > thumbnail.jpgこれで埋め込まれている画像が
thumbnail.jpg
へ保存されました。このファイルは通常のjpegなので普通のビューアーで見ることができます。
次にこの記事のメイン、サムネイルの埋め込みをやってみましょう。
対象とする画像ですが、せっかくなので既に埋め込まれている画像ではなくてサムネイルのエントリさえ無い画像を使ってみます。まずは埋め込むためのサムネイルを作成します。ここではExifTool同様、UnixライクなツールImageMagickのconvert.exe
を使って縮小します。ImageMagickの使い方については他のサイトを参照してください。そして縮小後の画像から余計なEXIFなどのタグを削除します。
>convert.exe -resize 160x160 -quality 50 data.jpg thumbnail.jpg >exiftool.exe "-all=" -m -q -P -overwrite_original thumbnail.jpg品質を100段階で50まで下げているせいか 4,767,094バイトのdata.jpgが3,269バイトまで小さくなりました。約1,460分の1です。
サムネイルができたので実際に埋め込んでみます。
>exiftool.exe "-ThumbnailImage<=thumbnail.jpg" -m -q -P -overwrite_original data.jpgこれで完成です。念のためにExifToolで確認してみましょう。
>exiftool.exe -ThumbnailImage data.jpg Thumbnail Image : (Binary data 3269 bytes, use -b option to extract)大丈夫です。
thumbnail.jpg
はもう必要ないので削除してかまいません。
おまけでPicasaでのプロパティ表示です。
上の例ではサムネイル画像という中間ファイルを作りましたが、Unix流にパイプでつなぐと中間ファイルを作らずに埋め込みができます。
>convert.exe -resize 160x160 -quality 50 data.jpg - | exiftool.exe "-all=" -m -q -P - | exiftool.exe "-ThumbnailImage<=-" -m -q -P -overwrite_original data.jpg
jheadではもっと簡単にできるけれども、関与したくないEXIFの他の項目についても変更されてしまいます。というか消えてしまう。jheadでサムネイルを操作するには、既に埋め込まれているサムネイルと交換という方法しか取れません。埋め込まれていない場合はjheadの「簡素なタグを埋め込む」コマンドを実行してサムネイルの項目を作成するが、この時点で既存の項目が消えてしまうのです。それが気にならないならjheadでの作業はとても便利だと思います。が、気になる…
ExifToolのホームページからダウンロードできるWindows版のバイナリはファイル名がexiftool.exe
ではなくなぜかexiftool(-k).exe
となっています。変なファイル名だなぁと思っていたら、これが賢いんです。「GUIお得意のドラッグ&ドロップで動作させるときにオプションを追加できない」という不都合をファイル名にオプションを埋め込んで解消しているのです。この場合、デフォルトで-k
オプションを有効にしています。これが有効だとコマンドの動作後に-- press any key --
と表示されてキーを打ち込まないといけません。実行後すぐにウィンドウが閉じてしまうのを防いでいます。なるほど。
しかし、コマンドラインで作業しているときにはこれがすごく不便です。いちいち止められるのでリズムが崩れます。しかも実行ファイル名をダブルクォーテーションで囲まないといけません。最近のコマンドラインは自動補完があるからいいじゃないか?いや、バッチファイルを書くこともあるのでやっぱり不便です。ということでファイル名をexiftool.exe
にリネームしましょう。