我目前正在使用照片框架(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上看到结果。