在UIImageView中加载时,大型jpeg使用的内存比较小的jpeg大。为什么呢?

时间:2017-09-08 09:17:36

标签: ios cocoa-touch memory uiimageview jpeg

我们的应用程序中的登录视图使用大型背景图像。为了尝试节省内存/应用程序大小,我调整了大小并压缩了这些图像,这大大减少了文件大小(小于1mb,低于几mb)。

当监控我的应用程序内存使用情况(XCode调试器)时,显示修改后的图像(大约30-40mb)时会出现明显的峰值。我正常接受这一点,并确保尽快释放图像以限制内存使用。

我最近开始更换几张图片,并希望在调整大小/压缩它们之前预览新图像。我注意到这些图像(其中一个是磁盘上的11mb和4640x3472像素)对应用程序内存使用没有任何明显的影响,增加了“其他进程”和“其他进程”。相反(约20-30mb)。

任何人都可以解释这里发生的事情吗?我想确认继续调整图像大小/压缩图像。

请注意,我使用UIImage(contentsOfFile:)加载图像,然后使用GIMP调整图像大小/压缩图像。新图像直接来自Flickr并且未经修改。

干杯。

1 个答案:

答案 0 :(得分:1)

图像的内存大小(作为UIImage)与压缩的磁盘大小(您的JPEG)不同

UIImage每像素需要4个字节(RGBA)x高度x - 对于4640 x 3472图像,您需要查看64,440,320个字节 - 与磁盘上的11MB完全不同