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 含)が入っていて、その中に機種名があるという訳だ。「じゃあ、そのコードを中に書けば機種名出せるじゃん!」…その通りなんで、その方向で三連休中挑戦してみようかと。