Exif JSONサービス
デジタルカメラなどで撮影した画像ファイルに含まれるExifメタ情報を取得し、JSON形式で出力するサービスを作ってみました。
JSON形式で取得する
JSON形式でExif情報を取得する場合には以下の形式のURLをGETします。
http://as-is.net/exif/json?url=<Image-URL>
戻り値はJSON形式のExif情報です。
{"FocalLengthIn35mmFormat":28,"ThumbnailOffset":8096,"WhiteBalance (1)":"Auto",
"Model":"DMC-LX2","FlashpixVersion":"0100","ShutterSpeed":"1/100",
"ShootingMode":"Program","TravelDay":"n/a","ResolutionUnit":"inches",
"FocalLength35efl":"6.3mm (35mm equivalent: 28.0mm)",...}
JSONP形式で取得する
引数callbackにコールバック関数名を指定してGETすると、
http://as-is.net/exif/json?url=<Image-URL>&callback=<callback_func>
指定された名前の関数呼び出しを生成します。
callback_func({"FocalLengthIn35mmFormat":28,"ThumbnailOffset":8096,"WhiteBalance (1)":"Auto",
"Model":"DMC-LX2","FlashpixVersion":"0100","ShutterSpeed":"1/100",
"ShootingMode":"Program","TravelDay":"n/a","ResolutionUnit":"inches",
"FocalLength35efl":"6.3mm (35mm equivalent: 28.0mm)",...});
また、引数varに変数名を指定してGETすると、
http://as-is.net/exif/json?url=<Image-URL>&var=<var_name>
指定された「変数名.data」にJSONデータを格納し、「変数名.onload」関数の呼び出しを生成します。
if (typeof(var_name) == 'undefined') test = {};
var_name.data = {"FocalLengthIn35mmFormat":28,"ThumbnailOffset":8096,"WhiteBalance (1)":"Auto",
"Model":"DMC-LX2","FlashpixVersion":"0100","ShutterSpeed":"1/100",
"ShootingMode":"Program","TravelDay":"n/a","ResolutionUnit":"inches",
"FocalLength35efl":"6.3mm (35mm equivalent: 28.0mm)",...};
if (typeof(var_name.onload) == 'function') var_name.onload(var_name.data);
注意点
- URLをキーにしてExif情報を1日間キャッシュします。
- 対象画像ファイルの先頭約30KB分をPartial GETしてExif情報を抽出しています。なので、巨大なサムネイルデータをExifとして持つような画像ファイルには対応できません。なぜ「約30KB分」なのかと言うと「私が持っているDMC-LX2ではそれくらいの長さが必要だから」です。うまく取得できないデータがあったらご連絡ください。
- アプリケーションはそのうち書きます。
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/477
Comments (0)