Я работаю над приложением для iOS, в котором мне нужно получить все изображения из галереи iPhone, а затем получить его значение exif. Чтобы получить значение exif, мне нужно получить изображение, используя данные изображения.
Я использую для этого следующий код:
-(void)getExifDataFromImage:(NSInteger)index{
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous=YES;
options.resizeMode=PHImageRequestOptionsResizeModeFast;
[[PHImageManager defaultManager] requestImageDataForAsset:asset
options:options
resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info)
{
CIImage* ciImage = [CIImage imageWithData:imageData];
NSLog(@"Metadata : %@", ciImage.properties);
exifCount++;
NSDictionary *pro=ciImage.properties;
NSDictionary *exifDic=[pro objectForKey:@"{Exif}"];
NSDictionary *tiffDic=[pro objectForKey:@"{TIFF}"];
}];}
Все работает нормально для изображений около 1200, но если мы превысим это значение, мы получим проблемы с памятью и приложение вылетит.
Я также попытался получить изображение, используя приведенный ниже код, чтобы получить изображение, а затем попытался найти значение exif для изображения с измененным размером.
[self.imageManager requestImageForAsset:asset targetSize:CGSizeMake(360, 360) contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self doSomething]
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image=result;
});//
});
}];
Но я не могу получить значение exif для изображений с измененным размером.
Ошибка: libBacktraceRecording.dylib: allocate_free_list_pages() -- исчерпана виртуальная память!
Пожалуйста, предложите мне, как справиться с этой проблемой сбоя памяти. Также, пожалуйста, предложите, есть ли другой способ получить значение exif.
getExifDataFromImage:
? - person orkoden   schedule 03.02.2016