我从网络资源下载了大量 UIImage(>300MB),当我尝试渲染时,它会因内存而导致应用程序崩溃。我正在尝试使用以下代码调整图像大小:
+ (UIImage *)imageWithImage:(UIImage *)image scaled:(float) scale {
//UIGraphicsBeginImageContext(newSize);
CGSize size = (CGSize){scale * image.size.width, scale * image.size.height};
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
问题是,正如您可能已经猜到的那样,这需要实际渲染图像,从而导致相同的崩溃。有没有办法调整大图像的大小而不会给系统带来如此巨大的内存压力?
最佳答案
问题是您将图像保存在内存中。将其下载到磁盘并使用 ImageIO 框架直接从磁盘读取“缩略图”(较小尺寸),而无需将全尺寸图像保存在内存中。
关于ios - 在内存限制下调整 UIImage 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152495/