我正在处理一个应用程序,我正在从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之间。
答案 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];