ios - 在内存限制下调整 UIImage 的大小

标签 ios objective-c uiimage core-graphics image-resizing

我从网络资源下载了大量 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/

相关文章:

ios - 如何在 pdf 文件中添加卷页效果?

ios - 来自 Objective-C 的可选协议(protocol)不是应该在 Swift 中完成的事情吗?

iphone - 合成属性是否已经 alloc/init -ed?

ios - swift : How to set image to label that fits as per label size?

ios - NSString 验证

ios - 'textStorage' 是一个只读属性 - 为 UITextView 使用 MarkdownKit 框架时出错

ios - 如何快速访问云驱动器以将文件导入我的应用程序?

objective-c - 全屏播放视频时(Xcode 6)UIWebView打破约束

iPhone:如何确定 UIImage 区域的平均明暗度

swift - "Cannot convert value of type ' () ' to UIImage": Swift