为了账号安全,请及时绑定邮箱和手机立即绑定

问题设置图像的exif数据

问题设置图像的exif数据

炎炎设计 2019-08-06 15:11:41
问题设置图像的exif数据我在iOS 4.1中使用新的ImageIO框架。我使用以下代码成功检索exif元数据:CFDictionaryRef metadataDict = CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary , NULL);阅读它,它似乎是有效的。保存图像有效,但图像中从不存在任何exif数据。    CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((CFURLRef) docurl, kUTTypeJPEG, 1, NULL);     // Add the image to the destination using previously saved options.      CGImageDestinationAddImage(myImageDest, iref, NULL);     //add back exif     NSDictionary *props = [NSDictionary dictionaryWithObjectsAndKeys:                             [NSNumber numberWithFloat:.1], kCGImageDestinationLossyCompressionQuality,                            metadataDict, kCGImagePropertyExifDictionary, //the exif metadata                                                         nil];                           //kCGImagePropertyExifAuxDictionary     CGImageDestinationSetProperties(myImageDest, (CFDictionaryRef) props);     // Finalize the image destination.      bool status = CGImageDestinationFinalize(myImageDest);
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

我尝试了史蒂夫的答案并且它有效,但我认为它对于大型图像来说很慢,因为它会复制整个图像。


您可以使用CMSetAttachments直接在CMSampleBuffer上设置属性。在打电话之前这样做jpegStillImageNSDataRepresentation


CFDictionaryRef metaDict = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate);

CFMutableDictionaryRef mutable = CFDictionaryCreateMutableCopy(NULL, 0, metaDict);


NSMutableDictionary * mutableGPS = [self getGPSDictionaryForLocation:self.myLocation];

CFDictionarySetValue(mutable, kCGImagePropertyGPSDictionary, mutableGPS);


// set the dictionary back to the buffer

CMSetAttachments(imageSampleBuffer, mutable, kCMAttachmentMode_ShouldPropagate);

方法getGPSDictionaryForLocation:可以在这里找到:


在iOS4.1上保存带照片的地理标记信息


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 656 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信