Javaで取得をしてみました。
EXIF情報取得には、METADATA EXTRACTORという
便利なライブラリがあるのでこれを使わせてもらいます。
EXIF情報は、情報によって格納されているディレクトリが異なるらしいので、
まずJPEGのメタデータを読み込んだあと、必要なディレクトリを読み込んで、情報を取り出します。
EXIF情報には何があるか、情報のタグ名、タグIDがどのようになっているかは、このサンプルが参考になります。
METADATA EXTRACTORを使ってJavaでEXIF情報読み込む例はこことかここにあるのですが、
情報が古く、最新のライブラリの仕様は変わっていてコードがそのままでは使えないため、
ライブラリの仕様に合わせてプログラムを変更します。
またいつ仕様も変更になるかわからないので、githubのGettingStartedを参考にするとよいでしょう。
試しに、以下のデータを読みだした例を置いておきます。
・カメラメーカー
・カメラモデル
・絞り値
・露出時間
・露出
・焦点距離
・撮影日時
------------------------------------------
import java.io.File;
import java.util.Date;
import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import com.drew.metadata.exif.ExifSubIFDDirectory;
public class Main {
public static void main(String[] args) {
// メタデータを読み込み
File jpegFile = new File(fileName);
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
ExifIFD0Directory ifdDirectory = metadata.getDirectory(ExifIFD0Directory.class);
ExifSubIFDDirectory subIfdDirectory = metadata.getDirectory(ExifSubIFDDirectory.class);
// タグの値を読み込み
String maker = ifdDirectory.getString(ExifIFD0Directory.TAG_MAKE);
String cameraModel = ifdDirectory.getString(ExifIFD0Directory.TAG_MODEL);
String fNumber = subIfdDirectory.getString(ExifSubIFDDirectory.TAG_FNUMBER);
String exposureTime = subIfdDirectory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_TIME);
String ISO = subIfdDirectory.getString(ExifSubIFDDirectory.TAG_ISO_EQUIVALENT);
String exposureBias = subIfdDirectory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_BIAS);
String foculLength = subIfdDirectory.getString(ExifSubIFDDirectory.TAG_FOCAL_LENGTH);
Date date = subIfdDirectory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
System.out.println(maker);
…
}
}