Jan 26, 2007

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ではそれくらいの長さが必要だから」です。うまく取得できないデータがあったらご連絡ください。
  • アプリケーションはそのうち書きます。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com