デジカメで撮影した写真には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ページを参照してください。