WEBページに表示されている画像のEXIF情報をザザーと一覧表示するブックマークレット(というかWEBサービス)「EXIF EXISTS ?」を作ってみました。
・EXIF EXISTS ? | あるWEBページ上の画像EXIF情報をまとめて一覧表示
「イグジフ・イグジスツ」とでも読んでみようかと思う。
毎度ながら舌を噛み切りそうな名前をつけるオレ。
そして、自分でもウマく読めないorz
使い方はいたって簡単。
EXIF EXISTS ?のページに行って、調べたいWEBページのURLを入力するか、調べたいWEBページを開いた状態で下記ブックマークレットを実行すれば、そのWEBページに表示されている画像からEXIF情報を取り出し、一覧表示します。
>EXIF EXISTS ?(Bookmarklet)
EXIF EXISTS ? を作ったきっかけ
先週、紫色の何かを口に押し付けているすごい人が面白いサービスを作っていたわけで、
仕組みは単純で、ブログに埋め込まれている JPEG ファイルを探して、EXIF データがあればその Model, Make をみてメーカー・機種名を出しています。
携帯の機種がさくっと分かってスゲーなーとか思っていたんだけど、EXIFにはもっと色んな情報が入っているし、ウマい写真撮る人がどんなデジカメ使っているかとか、ISOとか露出とかこのくらいでこんな色か、みたいな事を写真と見比べながら確認できたらすごい勉強になるなぁと思って(オレが)。
自分の周りに写真好きが異常に多い事もあって、結構需要は多いんじゃないかと勝手に思っています。
仕組み等を紆余曲折
実はEXIFなんて簡単に取得できちゃうんですが、JSONで取得できるAPIまでありましたよ。
デジタルカメラなどで撮影した画像ファイルに含まれるExifメタ情報を取得し、JSON形式で出力するサービスを作ってみました。
で、当初これを使ってサクッと!と思っていたんですが、うまくEXIFを取得できない画像が多いように感じたので、
巨大なサムネイルデータをExifとして持つような画像ファイルには対応できません。
しかたないので、自前で実装しました。といってもPHPだと関数一発、ファイト一発。
array exif_read_data ( string $filename [, string $sections [, bool $arrays [, bool $thumbnail]]] )
EXIF情報が配列で返ってくるのであとは並べるだけ。
あ、そうそうEXIFの前に対象の画像URLを取得しなきゃいけないので以下のような手順をふんでます。
1)指定されたURLのHTMLを取得
2)HTMLからIMG要素を正規表現で抜き出し
3)IMG要素のリストからSRC属性を抜き出し
4)SRC属性のリストからEXIFに対応しているJPEG/TIFFの画像のみ取得
5)EXIF取得
6)一覧表示
おおざっぱすぎるけどまさにこんな感じ。
ご意見ご感想お待ちしています
写真(やカメラ)の知識が足りないので、一般的にEXIF情報の中で何の項目を確認したいか良く分からず。しかも、一覧表示にするのである程度項目は絞らなきゃいけないなと思ったので結構悩みました。結局、Flickrとか他のフォトサービスを参考に表示する項目を決めましたが、何かお気付きの方がいましたら情報頂ければと思います。あと、やっつけで作ったのでバグあるかも。そんな落とし穴を見つけた場合もフィードバックしてもらえるとなお嬉し。
関連エントリー
・EXIFについて改めて考える
・動画を楽しもう!(Youtubeの動画を片っ端からダウンロードするブックマークレット)
・第13回:URLエンコードとURLデコードを簡単にするブックマークレット
・第11回:引用(blockquote)を簡単にするブックマークレット
・第9回:閲覧しているサイトへのリンクタグを生成するブックマークレット
・第6回:TinyURL の遷移先が怖くて開けない場合の対処法