EXIF 是保存由相機拍攝下來的資料,
所以通常只要是相機拍的數位相片都有這項資訊,
但是要怎麼取出這些資訊了?
作法請看下面的教學
首先這個教學需要使用 ImageIO 的 framework,所以自己要實作的時候要記得將他 import 進來。
- (NSDictionary *)imagePropertiesWithPath:(NSString *)path { // 將檔案的路徑轉成 NSURL 物件 NSURL *imageFileURL = [NSURL fileURLWithPath:path]; // 讀取這個檔案的資訊 CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL); /* 設定準備讀資料的選項,這裡是不要將檔案使用快取的方式, 這是避免檔案過大,而消耗過多記憶體空間的問題。 */ NSDictionary *options = @{(id)kCGImageSourceShouldCache: @(NO)}; // 從檔案資訊中擷取關於圖片的資料 CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (CFDictionaryRef)options); CFRelease(imageSource); return (NSDictionary *)imageProperties; }
- (void)viewDidLoad { ~ // 取得剛剛的圖片資訊 NSDictionary *imageProperties = [self imagePropertiesWithPath:_filePath]; // 再從中取出 EXIF 資訊 NSDictionary *EXIFInformation = imageProperties[(id)kCGImagePropertyExifDictionary]; // 取出 EXIF Auxiliary 資訊 NSDictionary *EXIFAuxiliary = imageProperties[(id)kCGImagePropertyExifAuxDictionary]; ~ }
這樣子就能取得 EXIF 資訊,另外還有 GPS 資訊也是可以在 imageProperties 中取得,
另外,這次的範例檔:https://github.com/Darktt/EXIF-Reader
範例檔的使用方法,建議使用模擬器,先執行過一次,在 Log 中能找到
**** Directory Path:
這個資訊,這後面就是接著你要放數位照片的路徑,
請用 Finder 打開這個路徑,放入你要讀取的照片,
重新執行這個程式,這時候就會讀到這張照片的檔名了。
沒有留言:
張貼留言