从iCloud Photo Library获取修改后的图像元数据

时间:2016-07-13 17:56:37

标签: ios image uikit photokit

我目前正在使用照片框架(PhotoKit)和以下代码从iCloud照片库中检索图像(和相关元数据):

    PHAsset *asset = ...;

    PHImageRequestOptions *options = [PHImageRequestOptions new];
    options.networkAccessAllowed = YES;
    options.version = PHImageRequestOptionsVersionCurrent;
    options.resizeMode = PHImageRequestOptionsResizeModeNone;
    options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat; // ignored by requestImageDataForAsset

    self.requestID = [self.imageManager requestImageDataForAsset:asset options:options resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
        if (imageData) {
            NSDictionary *metadata = nil;

            CGImageSourceRef sourceRef = CGImageSourceCreateWithData((CFDataRef)imageData, NULL);
            if (sourceRef) {
                CFDictionaryRef dictionaryRef = CGImageSourceCopyPropertiesAtIndex(sourceRef, 0, NULL);
                if (dictionaryRef) {
                    metadata = (__bridge NSDictionary *)dictionaryRef;
                    CFRelease (dictionaryRef);
                }
                CFRelease (sourceRef);
            }

            NSLog("metadata = %@", metadata);

            self.requestID = PHInvalidAssetResourceDataRequestID;
        }
    }];

我遇到的问题是返回的元数据来自原始文件。它不包含对使用“照片”应用完成的标题,说明或关键字的任何修改(这些项目存储在{IPTC}类别中。)

-requestImageDataForAsset:options:resultHandler的标题文档指出PHImageRequestOptionsVersionCurrent可用于检索调整后的呈现图像,但这似乎不适用于元数据的调整

是否有另一种方法可以从Photos框架中获取修改后的元数据?使用Mac上的照片应用向其图片添加标题,说明和关键字的客户希望在iOS上看到结果。

0 个答案:

没有答案