我想加载并显示图像(.jpg,.png)具有大尺寸,例如1800x1200 或 2000x1800(宽 x 高)。
如果我在 UIImageView 中显示如此大尺寸的图像(1800x1200 或 2000x1800),它也会消耗大量内存,并且应用程序会崩溃。
另外根据苹果的文档(http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html),我们应该避免创建尺寸大于 1024 x 1024 的 UIImage 对象。
一种解决方案是调整图像大小。我已使用以下代码应用逻辑来调整图像大小。
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这工作正常并调整图像大小。但是,当它在设备上下文中加载大图像以调整大小时,它会在一秒钟内消耗大量内存,并且因此应用程序崩溃。
所以这个方法是行不通的。如果您有更好的方法来调整大小而不使其崩溃,请分享。
也在这个(http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html)链接,苹果说
“您应该避免创建尺寸大于 1024 x 1024 的 UIImage 对象。除了此类图像会消耗大量内存之外,在 OpenGL ES 中使用图像作为纹理或将图像绘制到视图或图层。如果您执行基于代码的操作,例如通过将图像绘制到位图支持的图形上下文来调整大于 1024 x 1024 像素的图像大小,则此大小限制不适用。事实上,您可能需要调整大小以这种方式绘制图像(或将其分解为几个较小的图像),以便将其绘制到您的视图之一。”。
有人可以详细说明吗"This size restriction does not apply if you are performing code-based manipulations, such as resizing an image larger than 1024 x 1024 pixels by drawing it to a bitmap-backed graphics context."
?如何在位图支持的图形上下文上绘制图像?什么是位图支持的图形上下文?如果有人可以分享示例代码,这会对我有帮助。
提前致谢!!