Я использую ChuteSDK импортировать несколько изображений из библиотеки фотографий что-то вроде этого:Импорт несколько изображений исходного разрешения: низкая память предупреждение выпуска
-(void)doneSelected{
NSMutableArray *returnArray = [NSMutableArray array];
[self showHUD];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void){
for(id object in [self selectedAssets]){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if([object isKindOfClass:[GCAsset class]]){
ALAsset *asset = [object alAsset];
NSMutableDictionary* temp = [NSMutableDictionary dictionary];
[temp setObject:[[asset defaultRepresentation] UTI] forKey:UIImagePickerControllerMediaType];
[temp setObject:[UIImage imageWithCGImage:[[asset defaultRepresentation] fullScreenImage] scale:1 orientation:(UIImageOrientation)[[asset defaultRepresentation] orientation]] forKey:UIImagePickerControllerOriginalImage];
[temp setObject:[[asset defaultRepresentation] url] forKey:UIImagePickerControllerReferenceURL];
[returnArray addObject:temp];
}
[pool release];
}
dispatch_async(dispatch_get_main_queue(), ^(void) {
if(delegate && [delegate respondsToSelector:@selector(PhotoPickerPlusController:didFinishPickingArrayOfMediaWithInfo:)])
[delegate PhotoPickerPlusController:[self P3] didFinishPickingArrayOfMediaWithInfo:returnArray];
[self hideHUD];
});
});
}
Но fullScreenImage
дает мне уменьшенную версию исходного изображения и если я использую fullResolutionImage
, это вызывает проблему low memory warning
, из-за которой приложение терпит крах.
Как я могу получить изображение с оригинальным разрешением, не вызывая проблем с памятью.
P.S: Я не использую ARC
в своем проекте.
Что делать, если вы переместите код установки изображения из блока асинхронизации. Когда вам нужно показать изображения, используйте AssetURL, чтобы перейти к изображению. Другими словами, динамически загружайте изображения, поскольку они собираются войти в видимый кадр, вместо того, чтобы выделять их, когда они не нужны, поскольку они являются большими файлами. – jarryd
Я не могу получить исходное изображение с разрешением от AssetURL, каков способ сделать это? –
Не совсем уверен, почему вы храните копию изображения в словаре, когда у вас уже есть ссылка на ALAsset и, следовательно, на изображение. Итак, эта строка [temp setObject: [UIImage imageWithCGImage: [[свойство defaultRepresentation] fullScreenImage] scale: 1 ориентация: (UIImageOrientation) [[свойство defaultRepresentation]]] forKey: UIImagePickerControllerOriginalImage]; должно быть просто [UIImage imageWithCGImage: [[свойство defaultRepresentation] fullScreenImage] scale: 1 ориентация: (UIImageOrientation) [[свойство defaultRepresentation]]]; при назначении видимому изображению. – jarryd