BathyScaphe ネタ(その33)
つまるところ、プレビューインスペクタで Exif データを参照出来るようにしたい訳だ。昨日のエントリのスクリーンショットでは、ツールチップで表示している。なんだっけ?「焦点距離、F値、シャッタースピード、ISO設定感度」というコトバになるのでしょうか。……すいません、あまり詳しくなくて……とりあえず代表的っぽい項目に絞って表示してみている。全部載せは、場所が無いね。プレビュー.app で見てくれ…
さて、BathyScaphe スレッドで、「カメラの機種名、撮影時間、35mm換算値」も見たいと書かれていた。もちろん、Exif データのどこかにこれらの値も入っている。取り出してくれば見られる。撮影時間と35mm換算値はそのままいけそう。問題は機種名だ。こいつは -[NSBitmapImageRep valueForProperty:NSImageEXIFData] で得られる NSDictionary には入っていない。ここ数日調べた限り、こいつを取り出すには、NSBitmapImageRep の世界に居るままでは無理っぽいんだ…… CGImageSource の世界へ飛んでいかないといけないようだ。
// filePath はイメージファイルのパスとして CGImageSourceRef cgImage; NSDictionary *dict; cgImage = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:filePath], NULL); dict = (NSDictionary *)CGImageSourceCopyPropertiesAtIndex(cgImage, 0, NULL);
みたいにやる。こっちの dict には、もっとどっちゃり画像のメタデータ(Exif 含)が入っていて、その中に機種名があるという訳だ。「じゃあ、そのコードを中に書けば機種名出せるじゃん!」…その通りなんで、その方向で三連休中挑戦してみようかと。