どこまでできるか自信はありませんが、EXIFを表示するサンプルプログラムの開発に着手しようとしています。
iOSアプリの開発にこだわっていたのですが、OS XでEXIFを処理できるプログラム開発をできないか、考えています。
まず、サンプルプログラム作成からです。次のように書いてみて、それでいいようです。
EXIF Dictionary KeysにkCGImagePropertyExifDateTimeOriginal以外のキーが定義されています。
import Cocoa
import ImageIO //これを忘れないこと。
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
func applicationDidFinishLaunching(aNotification: NSNotification) {
//テスト用のjpgファイルのFilepathからNSURLを作成する。
var filepath = NSHomeDirectory() + “/Desktop/test.jpg”
var imageURL: NSURL = NSURL(fileURLWithPath: filepath)!
//イメージソースを定義しプロパティを読み込む。
//EXIFを読み込む。
//日付時間を取り出し、ログを出力。
var imageRef:CGImageSourceRef = CGImageSourceCreateWithURL(imageURL as CFURLRef, nil) //イメージソース
var imageDict:NSDictionary = CGImageSourceCopyPropertiesAtIndex(imageRef, 0, nil) //プロパティ
var exif: AnyObject? = imageDict.objectForKey (kCGImagePropertyExifDictionary) //EXIF
var date: AnyObject? = exif?.objectForKey (kCGImagePropertyExifDateTimeOriginal) //Date Time
println(“date=\(date)”)
この次は書き出しですね。その前に、日付時間以外のものも試してみますけど、こんな簡単に行くのなら、むしろ緯度経度を地図から入れ込むアプリとしての機能の作り込みに気をとられてしまうと、そっちの方が大変そうです。今のところ、そこまでは考えていません。
次のサイトが参考になりました。
- Swiftを使って初めてMacアプリを作ってみた
- Accessing Image Properties Without Loading the Image into Memory (Objective-C)
今後、次のサイトが参考になるかもしれません。現時点では、参照せず。
- iOS jpgのExif情報を設定・取得 (Objective-C)