JpegのExifデータを削除したり編集できるコマンド
デジカメで撮影した写真にはExifというメタデータが埋め込まれています。撮影した日時、場所、シャッター速度や露出などの情報が記録されています。
写真をブログやSNSで公開するときに、Exifが含まれていると個人情報にもつながるので、そのようなデータを消去する必要性が増えています。そのため、アプリで自動的に消去してくれたり、Adobe Lightroomなどの画像管理のソフトには消去する機能が用意されています。
当然、シェルのコマンドラインでも同等のことができれば、作業の自動化などさらに便利な使い方ができるはずです。今回は、コマンドラインでExifを消去する方法を紹介します。
Exif2をインストールする
使用するのはExif2(http://www.exiv2.org) というライブラリです。シェルで使えるコマンドも提供されています。Exifだけでなく、IPTC、XMPなど他のメタデータにも対応している高機能なコマンドです。
インストール方法は、上のリンクからWindows版のexeファイルとソースをダウンロードできるようになっています。僕の場合は、Macで使いたかったので、MacPortsを使ってインストールしました。この記事はその方法を紹介しておきます。
MacPortsインストールする場合は
$ sudo port install exiv2
とするだけです)。
もちろんHomebrewなら
$ brew install exiv2
でOK。
使いかた
データの確認
まずはどんなExifデータが埋め込まれているかを確認するには次のようにします。
$ exiv2 pr demo.jpg
ExifだけなくIPTCやXMPなどすべての埋め込まれている情報を表示するにはオプション-paを付与します。
$ exiv2 -pa pr demo.jpg
大量のデータが表示されますので、一部抜粋したものを上げるとこんな感じ。
Exif.Image.Make Ascii 9 FUJIFILM Exif.Image.Model Ascii 5 X-E2 Exif.Image.Orientation Short 1 top, left Exif.Image.XResolution Rational 1 72 Exif.Image.YResolution Rational 1 72 Exif.Image.ResolutionUnit Short 1 inch Exif.Image.Software Ascii 28 Digital Camera X-E2 Ver3.00 Exif.Image.DateTime Ascii 20 2015:07:07 10:40:09 Exif.Image.WhitePoint Rational 2 313/1000 329/1000 Exif.Image.PrimaryChromaticities Rational 6 64/100 33/100 21/100 71/100 15/100 6/100 Exif.Image.YCbCrCoefficients Rational 3 299/1000 587/1000 114/1000 Exif.Image.YCbCrPositioning Short 1 Co-sited Exif.Image.Copyright Ascii 5 Exif.Image.ExifTag Long 1 474
データの削除
Exifなどすべてのメタデータを削除する場合、次のようにします。
$ exiv2 rm demo.jpg
これを実行すると、ExifだけではなくIPTCやXMPなどすべての情報が即座に削除されてしまいます。ある意味、危険なコマンドなので、試すにはバックアップしておいてからのほうがいいでしょう。
ちなみにExifだけを削除したい場合は-deオプションを指定して
$ exiv2 -de rm demo.jpg
とすることで他のIPTCデータなどを残すこともできます。
Exifデータを削除するときの注意点
ただし、ここで注意が必要なのは、Exifを消すということは
Exif.Image.Orientation
という画像の縦横の向きの情報を消すことになります。縦向きに撮影した写真は、画像を表示するアプリ側でExifの情報から正しい向きに回転させて表示しています。その情報が失わてしまうので、縦向きの写真が横向きに表示されることになります。
この対策としては、例えば、Adobe LightroomでExifを含めずに画像をエクスポートした場合、画像そのものを縦向きに回転させているようですので、これを真似ておくのが無難かもしれません。
別の対策としては、exiv2で特定のExifデータだけを削除することも考えられます。例えば、GPSの地理情報だけを消すには、
Exif.GPSInfo.GPSLatitudeRef Exif.GPSInfo.GPSLatitude Exif.GPSInfo.GPSLongitudeRef Exif.GPSInfo.GPSLongitude Exif.GPSInfo.GPSAltitudeRef Exif.GPSInfo.GPSAltitude
これら関連する項目をひとつずつ削除することもできます。方法は次のように項目名を指定して
$ exiv2 -M"del {項目名}" demo.jpg
を実行します。
他にできること
値を変更する場合は、次のような形式でコマンドを実行します。
$ exiv2 -M"set {項目名} {型} {値}" {ファイル名}
次の例では、回転情報を編集しています。
exiv2 -M"set Exif.Image.Orientation Short 6" demo2.jpg
この例では、回転情報に6を指定することで、画像を90度右回りで表示されるようにしています。 左周りにする場合は8になります。詳細は次のサイトを参照してください。
http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf
2を指定すれば鏡面表示にもできます。
また、Jepgにプレビュー用の小さな画像が埋めこまれている場合、
$ exiv2 -pp pr demo.jpg Preview 1: image/jpeg, 160x120 pixels, 8746 bytes
とすれば一覧を確認できます。でのそのプレビュー画像を別ファイルとして取り出すには
$ exiv2 -ep demo.jpg
を実行します。すると、demo-preview1.jpgという別ファイルが出力されます。
なんともマニアックな使いかたですね。
Exif2やImageMagickのような高機能なコマンドラインを活用すれば、大量の画像ファイルを自動的に処理できるので、非常に便利です。
ということで、詳しい情報はMacページを参照してください。