2つの画像解析機能を実行する画像処理アプリケーションを作成しています。 1つは画像のRGBデータを読み取るもので、もう1つはEXIFデータを読み取るものです。私はフロントカメラで写真を撮ってから、ドキュメントフォルダに保存しています。 RGB値を取得するには、次のように画像をロードします。iPhone EXIFデータがドキュメントフォルダから読み取られない
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:jpgPath];
CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
これは期待どおりに動作し、ピクセルデータを取得できます。私の問題は、EXIFデータを収集しています。 RGBと同じ方法で画像の読み込みを実装しています。すべてのEXIFデータがNULLとして戻ってきます。
NSString *EXIFPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"];
NSURL *url = [NSURL fileURLWithPath:EXIFPath];
CGImageSourceRef sourceRef = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *immutableMetadata = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(sourceRef,0,NULL);
NSDictionary *exifDic = [immutableMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary];
NSNumber *ExifApertureValue = [exifDic objectForKey:(NSString*)kCGImagePropertyExifApertureValue];
NSNumber *ExifShutterSpeed = [exifDic objectForKey:(NSString*)kCGImagePropertyExifShutterSpeedValue];
NSLog(@"ExifApertureValue : %@ \n",ExifApertureValue);
NSLog(@"ExifShutterSpeed : %@ \n",ExifShutterSpeed);
私はこのようなアプリでプリロード画像を読み取るためのコードの最初の行を変更した場合:
NSString *aPath = [[NSBundle mainBundle] pathForResource:@"IMG_1406" ofType:@"JPG"];
それは動作します。問題は画像をプリロードできないことです。彼らはカメラから生きていなければなりません。どんな提案も大歓迎です。ありがとうございました。
はここ http://stackoverflow.com/questions/1238838/uiimagepickercontroller-and-からあなたの答えをゲット既存の写真から抽出するEXIFデータ –
http://stackoverflow.com/questions/9766394/get-exif-data-from-uiimage-uiimagepickercontroller/9890442#9890442 –
私が持っているコードはEXIFデータを読み込みます画像が電話機のドキュメントフォルダにあるときには表示されません。 EXIFコードをすべて書き換えるのではなく、画像をどのように読み込んでいるかを修正する方法はありますか? – tguidon