Takuji->find;

株式会社はてなでアプリケーションエンジニアやってます、技術的な記事を書いているつもり

ExifInterface Support Libraryについて調べてみた #関モバ

こんにちは、最近カメラにハマっているid:takuji31です。

なお、この記事の一部は本日開催の関西モバイルアプリ研究会#21で発表された内容です。

Exifについて

ExifはExchangeable image file formatの略で、写真のメタデータを画像に埋め込む仕組みでJPEGTIFFに使われます。

Exchangeable image file format - Wikipedia

記録内容は

など多岐にわたる一方で、GPSの情報がそのまま記録されることもあり個人情報の漏洩リスクも懸念されています。

最新版のバージョンは2.31で、CIPAのWebサイトから確認できます。

CIPA 一般社団法人カメラ映像機器工業会: CIPA規格類

http://www.cipa.jp/std/documents/j/DC-008-2016-J.pdf

Exif Support Library

Exif Support LibraryはExifの情報の操作を行えるSupport Libraryです。

Support Library 25.1.0から追加されました。

ExifInterafce自体はAPI5からあるのですが、対応しているタグがバージョンごとに違っていたりするので、Support Libraryが用意されたようですね。

対応フォーマット

以下の画像形式に対応しています。

有名どころのファイル形式は一通り対応していますね。なぜかTIFFには対応していなさそうです。

使ってみる

ExifInterface Support Libraryには ExifInterface というクラスだけが含まれています(正確にはprivateなinnerクラスがいくつか含まれていますが)。

ExifInterfaceインスタンスを作成して、いくつか用意されているメソッドを使って操作する感じですね。

  • getAttribute
  • getAttributeInt
  • getAttributeDouble

それぞれ引数に属性の名前を指定するのですが、名前は定数で用意されています。以下はその一部です。

  • TAG_DATETIME
  • TAG_MODEL
  • TAG_ORIENTATION
  • TAG_APERTURE_VALUE
  • TAG_SHUTTER_SPEED_VALUE
  • TAG_ISO_SPEED_RATINGS
  • TAG_FOCAL_LENGTH
  • TAG_GPS_LATITUDE

試しに先日買ったニコンのD500で撮影した写真の情報を抜き出してみました。

f:id:takuji31:20161226195750p:plain

  • RAWのサムネイルの色がぶっ壊れてる
  • 絞り値とシャッター速度が取れない

😇

まとめ

AndroidExifいじろうぜ!

サンプルコードはこちらです。

github.com