2

我正在使用从照片库加载图像的应用程序。

我正在使用以下代码将图像绑定到 imageView。

-(void)loadImage:(UIImageView *)imgView FileName:(NSString *)fileName
{
   typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset);
   typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);    

   ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
   {
     ALAssetRepresentation *rep = [myasset defaultRepresentation];
     CGImageRef iref = [rep fullResolutionImage];
     UIImage *lImage;
     if (iref)
     {
        lImage = [UIImage imageWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]];   
     }
     else
     {
        lImage = [UIImage imageNamed:@"Nofile.png"];
     }
     dispatch_async(dispatch_get_main_queue(), ^{
         [imgView setImage:lImage];
     });
   };

   ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
   {
       UIImage *images = [UIImage imageNamed:@"Nofile.png"];
        dispatch_async(dispatch_get_main_queue(), ^{
             [imgView setImage:images];
     });        
   };                   


    NSURL *asseturl = [NSURL URLWithString:fileName];

    ALAssetsLibrary *asset = [[ALAssetsLibrary alloc] init];
    [asset assetForURL:asseturl
           resultBlock:resultblock
          failureBlock:failureblock];
}

但是当我试图运行它时,一个错误来了,应用程序有时会崩溃。控制台上打印的错误是:

** * 错误:FigCreateCGImageFromJPEG 返回 -12910。423114 字节。我们将回到软件解码。收到内存警告。 我的照片库包含高分辨率图像,它们的大小在 10-30 MB 之间。

4

3 回答 3

2

最后我解决了这个问题。我认为问题在于获取全分辨率图像。

代替 :

CGImageRef iref = [rep fullResolutionImage];

我用了:

CGImageRef iref = [myasset aspectRatioThumbnail];

一切正常。控制台没有错误,没有崩溃,但图像的质量/分辨率降低了。

于 2012-12-27T14:02:22.757 回答
0

我有一个类似的错误:

* 错误:FigCreateCGImageFromJPEG 返回 -12909。0 字节。我们将回到软件解码。

随叫随到的应用程序迷恋:

CGImageRef originalImage = [representation fullResolutionImage];

我通过替换来修复它:

CGImageRef originalImage = [representation fullScreenImage]; 
于 2013-11-27T14:35:29.450 回答
-1
[UIImage imageWithCGImage:] 

imageWithCGImage是一个堆栈内存函数,如果大图像似乎溢出。使用堆函数怎么样?

lImage = [[[UIImage alloc]initWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]] autorelease];
于 2013-03-04T10:19:13.647 回答