获取使用 AVFoundation 的 AVCaptureStillImageOutput 捕获的图像的地理位置
Posted
技术标签:
【中文标题】获取使用 AVFoundation 的 AVCaptureStillImageOutput 捕获的图像的地理位置【英文标题】:Get Geolocation for image captured using AVFoundation's AVCaptureStillImageOutput 【发布时间】:2012-07-12 11:06:23 【问题描述】:我使用 AVFoundation 在 UIView 中捕获图像并向其中添加 cmets。现在,我需要获取捕获图像的地理位置。我当前的代码 sn -p 如下图所示。元数据没有地理位置。也许我将不得不使用 CLLocation?请尽快指导我。
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error)
CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate);
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:(__bridge NSDictionary*)metadataDict];
CFRelease(metadataDict);
NSLog(@"%@",metadata);
CFDictionaryRef exifAttachments = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifDictionary, NULL);
if (exifAttachments)
// Do something with the attachments.
else
NSLog(@"no attachments");
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
[captureSession stopRunning];
[imageData writeToFile:path atomically:YES];
];
【问题讨论】:
【参考方案1】:据我所知,您必须包装自己的元数据字典并将其添加到图像数据中。
这是一个类扩展(由 Gustavo 提供,链接如下),用于处理将 EXIF 和地理位置数据写入使用 AVCaptureStillImageOutput api 捕获的照片:https://github.com/gpambrozio/GusUtils/blob/master/GusUtils/NSMutableDictionary+ImageMetadata.m
另外,这里是 Gustavo 的文章解释了实现:http://blog.codecropper.com/2011/05/adding-metadata-to-ios-images-the-easy-way/
HTH
【讨论】:
以上是关于获取使用 AVFoundation 的 AVCaptureStillImageOutput 捕获的图像的地理位置的主要内容,如果未能解决你的问题,请参考以下文章
获取使用 AVFoundation 的 AVCaptureStillImageOutput 捕获的图像的地理位置
如何使用 AVFoundation 从视频流中获取原始格式的图像缓冲区?