• コーディング ファクトリーHOME
  • Coding Methodology
  • 第129回 Exiftoolとシェルスクリプトで画像情報を一括取得する

コーディングメソドロジー

第129回 Exiftoolとシェルスクリプトで画像情報を一括取得する

制作された大量の画像をチェックしなければならないとき、画像のイメージは目視確認となりますが、サイズ、容量、拡張子等を一つ一つエクスプローラーやFinderから確認していくのは作業時間もかかりますし、チェックの際ヒューマンエラーの発生原因となってしまいます。クリエイティビティを発揮する必要のない"作業"は正確さスピードに勝るPCに頼ってしまいましょう!

今回はExiftoolというアプリケーションといくつかのシェルスクリプトを使って画像情報の一覧をcsvファイル化する方法をご紹介します。

1. Exiftoolについて

デジカメなどで撮影した写真やPhotoshop等で制作された画像に付加されているEXIF情報を読んだり書いたりすることができるツールです。
※EXIF情報:Exchangeable Image File Formatの略で撮影場所やファイルサイズ等の画像ファイル内にあるメタ情報のこと。

2. インストール

Homebrew(mac,linux)やChocolatey(Windows)から簡単にインストールできます。

#homebrew
$ brew install exiftool
#chocolatey
$ choco install exiftool

※パッケージマネージャーを導入できない場合はexiftoolの本家サイトからバイナリデータをダウンロードすることでもインストールできます。

3. ターミナルから画像情報の一覧を取得する

今回はシェルとしてbashを利用し、各画像のパス、画像名、画像サイズ、画像容量、拡張子を取得するためのスクリプトを作成します。
スクリプトが完成したら忘れずに「$ source ~/.bashrc」コマンドで更新しましょう。

完成物(~/.bashrc内に記述)

function img_list(){
  # exiftoolの呼び出し 
     exiftool -r -csv -ext jpg -ext gif -ext png \
     -FileName -imagesize -filesize -FileTypeExtension \
     . > data.csv;
  # awkコマンドでCSVファイル1列目に入っている画像パスを相対パスへ変換
     awk '{gsub(/\./,"",$1);print $0 > "data_relative.csv"}' \
      data.csv;
  # csvファイルをエクセルで開くために文字コードを変換
     iconv -f UTF-8 -t SJIS data_relative.csv [\
     > data_sjis.csv;
  # 文字コード変換されたファイルをエクセルで開く(macの場合はopen)
     start excel data_sjis.csv;
}
  alias imgl=img_list

【Exiftoolコマンドのオプションについて】

・検索、ファイル出力のためのオプション
  -r:再帰的に画像をさがす(サブディレクトリ内も全てさがす)
  -csv : csvフォーマットで取得
  -ext (拡張子):検索するファイル種別

・出力項目のためのオプション
  -FileName: 画像名を取得
  -imagesize:画像サイズ(単位px)
  -filesize:画像容量(単位KB)
  -FileTypeExtension:拡張子

その他にも取得できる情報はかなりあります。Exiftoolのサイトで確認できます。
ExifTool by Phil Harvey https://exiftool.org/

4. シェルの実行

.bashrcファイルを更新し、一覧を取得したいカレントディレクトリへ移動し、下記コマンドを実行。

$ imgl

完了すると結果の出力とともにエクセルが起動します。

出力されるCSVファイル(エクセルで表示)

SourceFile項目に画像パスが取得されているのでそのままマークアップに使ってもよし。データ加工してaltテキストの列を追加しプロジェクトの画像関連の一覧データにするもよし。仕様通りの画像サイズとなっているか、表示速度に影響を与えそうな容量の大きい画像の洗い出し等の作業に役立ちます。

シェルスクリプトは用意されているコマンド自体も数多く便利な機能がいっぱいあります。利用範囲もWeb制作にとどまらずカメラマンからシステム開発まで世界中で利用者がスクリプトの書き方を公開しています。また、自動化させたい作業をPCにどう伝えるかを考えることも作業手順を見直すことにつながり効率、質の向上に役立ちます。こんな作業自動化できないかな?と思ったらぜひWeb検索で調べてみましょう。

  • 大規模サイト制作のご案内 大規模サイトプロジェクトのポイントやサービス内容をご紹介
  • コーディングメソドロジー
  • コーディングファクトリートピックス
  • 受注活動サポートサービス
  • コーディングファクトリーニュース
  • IllustratorでのWebデザイン
  • 求人案内
  • 株式会社モノサス
  • お問い合わせ

    コーディング相談ダイヤル

    お問い合わせ

  • ご相談、お問い合わせフォーム

    ご相談、お問い合わせフォーム