问题设置图像的exif数据

问题设置图像的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);


炎炎设计
浏览 657回答 3
3回答

沧海一幻觉

我尝试了史蒂夫的答案并且它有效,但我认为它对于大型图像来说很慢,因为它会复制整个图像。您可以使用CMSetAttachments直接在CMSampleBuffer上设置属性。在打电话之前这样做jpegStillImageNSDataRepresentationCFDictionaryRef 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 bufferCMSetAttachments(imageSampleBuffer, mutable, kCMAttachmentMode_ShouldPropagate);方法getGPSDictionaryForLocation:可以在这里找到:在iOS4.1上保存带照片的地理标记信息
打开App,查看更多内容
随时随地看视频慕课网APP