加载photolibrary图像时出错:ERROR:FigCreateCGImageFromJPEG返回-12910。 423114字节。我们将回归软件解码

时间:2012-12-24 03:54:48

标签: ios image alassetslibrary photolibrary

我正在处理一个应用程序,我正在从photolibrary中加载图像。

我正在使用以下代码将图像绑定到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之间。

3 个答案:

答案 0 :(得分:2)

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

而不是:

CGImageRef iref = [rep fullResolutionImage];

我用过:

CGImageRef iref = [myasset aspectRatioThumbnail];

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

答案 1 :(得分:0)

我有类似的错误:

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

app crush on call:

CGImageRef originalImage = [representation fullResolutionImage];

我通过替换为:

来修复它
CGImageRef originalImage = [representation fullScreenImage]; 

答案 2 :(得分:-1)

[UIImage imageWithCGImage:] 

imageWithCGImage是一个堆栈记忆功能,如果大图像似乎溢出。 那么使用堆函数呢?。

lImage = [[[UIImage alloc]initWithCGImage:iref scale:[rep scale] orientation:(UIImageOrientation)[rep orientation]] autorelease];