在我的应用程序中,我注意到我正在保存的图像开始写入相册并在照片应用程序中正确显示。但是,当我删除复制新图像的图像时,新图像的缩略图会消失。真的很奇怪。
这是我用来创建CGImageRef以保存到资产库的代码:
NSDictionary *options = [NSDictionary
dictionaryWithObjectsAndKeys:(__bridge NSNumber *)kCFBooleanTrue,
(__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways, nil];
CGImageRef fullImage = [asset.defaultRepresentation CGImageWithOptions:options];
在我抓住defaultRepresentation.fullResolution图像并将其写入资产库之前。
我的问题是:通过这种方式保存图像,我期望创建的缩略图是什么?而且,如果没有,我应该做些不同的事情来创建我的缩略图,这样它们就不会“消失”。
编辑: 发生这种情况时控制台中的错误是:
Aug 18 11:08:27 [phone name] [app name][2081] <Error>: Fixing thumbnail for 0x112b2dc0 <x-coredata://97C87589-EC35-4664-BE0D-AD01687EF7C4/Asset/p3637> AF6CD736-EF5D-482A-AFAD-F12834C301BF at index 2
失败的缩略图修复似乎只发生在我用新坐标修改GPS字典的图像上。我删除坐标的图像正确修复了缩略图。
以下是该部分的代码:
NSDictionary *gpsDictionary =
[readOnlyMetadata valueForKey:(__bridge NSString*) kCGImagePropertyGPSDictionary];
NSMutableDictionary *modifiableGpsDictionary = (gpsDictionary) ?
[gpsDictionary mutableCopy] : [[NSMutableDictionary alloc] init];
CLLocationCoordinate2D coordinate = thumbnail.coordinate;
[modifiableGpsDictionary setValue:[NSNumber numberWithDouble:ABS(coordinate.latitude)]
forKey:(__bridge NSString*) kCGImagePropertyGPSLatitude];
[modifiableGpsDictionary setValue:(coordinate.latitude < 0.0) ? @"S" : @"N"
forKey:(__bridge NSString*) kCGImagePropertyGPSLatitudeRef];
[modifiableGpsDictionary setValue:[NSNumber numberWithDouble:ABS(coordinate.longitude)]
forKey:(__bridge NSString*) kCGImagePropertyGPSLongitude];
[modifiableGpsDictionary setValue:(coordinate.longitude < 0.0) ? @"W" : @"E"
forKey:(__bridge NSString*) kCGImagePropertyGPSLongitudeRef];
[modifiableMetadata setValue:modifiableGpsDictionary
forKey:(__bridge NSString*) kCGImagePropertyGPSDictionary];