我从 Web 资源 (>300MB) 下载了大量 UIImage,当我尝试渲染时,由于内存原因导致应用程序崩溃。我正在尝试使用以下代码调整图像大小:
+ (UIImage *)imageWithImageUIImage *)image scaledfloat) 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;
}
问题在于,您可能已经猜到,这需要实际渲染图像,因此会导致同样的崩溃。有没有办法在不对系统造成如此巨大的内存压力的情况下调整大图像的大小?
Best Answer-推荐答案 strong>
问题是您将图像保存在内存中。将其下载到磁盘并使用 ImageIO 框架直接从磁盘读取“缩略图”(较小的尺寸),而无需将全尺寸图像保存在内存中。
关于ios - 在内存限制下调整 UIImage 大小,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/38152495/
|