从assetsLibrary获取图像 - 完整分辨率

时间:2013-03-16 10:22:45

标签: objective-c

我有一张图片专辑,我从iphone库中取出所有图片作为缩略图,并展示一张专辑。

当用户从相册中选择内容时,我必须拍摄ORIGINAL图像(不是缩略图)并保存。

因此,如果我在资产上运行,并保存仅缩略图,则需要4秒(1000张图片),但如果我尝试将原始大小保存到数组(以后我可以使用它)它需要永远和崩溃。

[group enumerateAssetsAtIndexes:set options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
 {
      CGImageRef imageRef = result.defaultRepresentation.fullResolutionImage;
      UIImage *toSend=[UIImage imageWithCGImage:imageRef];//original
      UIImage *thumbnail = [UIImage imageWithCGImage:[result thumbnail]];
      [assets addObject:thumbnail]; //works good
      [imagesToSend addObject:toSend]; // takes forever !

所以,我需要一个解决方案,所以我可以显示缩略图,但也有一些连接/指向全分辨率图像,所以它不会永远保存它们。

1 个答案:

答案 0 :(得分:0)

我的解决方案就是使用2功能。第一个是这个,只是为了获取缩略图,因为它不需要时间,用户可以立即看到他的专辑。

后来,当他选择自己喜欢的图像时,我再次使用此功能,但是以全分辨率拍摄,只需要拍摄所需的相关图像:

range=NSMakeRange('image tag number you want' ,1);
NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:range];


[group enumerateAssetsAtIndexes:set options:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
     {
                     if (result != nil)
                     {

                      CGImageRef imageRef = result.defaultRepresentation.fullScreenImage;
                      UIImage *toSend=[UIImage imageWithCGImage:imageRef];