【发布时间】:2014-06-26 18:29:33
【问题描述】:
我正在编写一个应用程序,它从照片库中获取现有照片,删除 GPS 元数据,并使用新元数据写出照片的副本。复制的照片在手机上的照片应用程序和 OS X 的 Preview.app 中正确显示,但 Image Capture.app 以错误的方向显示它。我不知道为什么会这样。
将原始照片和处理后的照片都导入计算机并在 Preview.app 中打开它们表明所有元数据都是相同的(除了缺少的 GPS 字典)。在我的测试照片中,预览表明原件和副本都有“方向:3(旋转 180)”,而预览实际上显示了正确的方向。但是 Image Capture 将副本显示为上下颠倒,而原始显示正确。显然,我在代码中遗漏了一些东西,但是什么?这是从 UIImagePickerController 的 resultBlock 调用的代码:
// Make a copy of a photo, minus the GPS metadata tags.
- (void)copyPhoto:(ALAsset *)asset fromAssetsLibrary:(ALAssetsLibrary *)library
{
// Get the image's current metadata
ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation];
NSDictionary *metadata = [assetRepresentation metadata];
NSMutableDictionary *mutableMetadata = [metadata mutableCopy];
// Remove the GPS tags
[mutableMetadata removeObjectForKey:@"{GPS}"];
// Write out a copy
[library writeImageToSavedPhotosAlbum:[assetRepresentation fullResolutionImage] metadata:mutableMetadata completionBlock:^(NSURL *assetURL, NSError *error) {
if (!error) {
NSLog(@"We wrote out a picture!");
}
}];
}
谢谢!
【问题讨论】:
-
不删除
{GPS}键是否还会出现问题?如果您将键的值更改为北极之类的东西而不是删除它,是否会发生这种情况? -
好问题。如果我根本不更改元数据,它仍然会发生。
标签: ios objective-c alassetslibrary