-1

我正在使用以下功能从视图中生成图像

-(void)preparePhotos 
{
    [assetGroup enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
     {
         if(result == nil)
         {
             return;
         }

         NSMutableDictionary *workingDictionary = [[NSMutableDictionary alloc] init];
         UIImage *img = [[UIImage imageWithCGImage:[[result defaultRepresentation] fullResolutionImage]] resizedImageToSize:CGSizeMake(600, 600)];
         [workingDictionary setObject:img forKey:@"UIImagePickerControllerOriginalImage"];
         [appdelegate.arrImageData addObject:workingDictionary];
     }]; 
}

但是随着调用此函数的次数增加,应用程序会崩溃。如何优化此功能或任何替代功能以从设备库中获取图像,这不会导致像这样的 crash.function 调用。

[self performSelectorInBackground:@selector(preparePhotos) withObject:nil];
4

1 回答 1

1

如果您想从照片库中获取所有图像,那么您应该只存储它们的资产 url 而不是图像本身。假设您将资产 url 存储在一个名为的数组中photoAssets,您可以通过仅传递索引来调用此方法:

- (UIImage *)photoAtIndex:(NSUInteger)index
{
    ALAsset *photoAsset = self.photoAssets[index];

    ALAssetRepresentation *assetRepresentation = [photoAsset defaultRepresentation];

    UIImage *fullScreenImage = [UIImage imageWithCGImage:[assetRepresentation fullScreenImage]
                                                   scale:[assetRepresentation scale]
                                             orientation:UIImageOrientationUp];
    return fullScreenImage;
}

有关更多信息或参考,您应该参考PhotoScrollerMyImagePicker

于 2014-02-04T11:58:51.113 回答