UIImageView中的JPG图像内存占用

时间:2012-01-03 09:21:32

标签: objective-c ios cocoa-touch cocoa

我知道PNG图像是压缩的,当作为UIImages加载到UIImageView时,它们在内存中占用的内容比原始文件多得多。这是否也适用于JPG图像?

1 个答案:

答案 0 :(得分:6)

简短回答:是的。

长答案:JPEG是一种有损压缩方案,可以压缩图像,使其比原始位图小几个数量级。 PNG是一种无损压缩方案,因此无法实现与JPEG一样好的压缩率。

因此,一个非常小的JPEG文件在解压缩时会膨胀到很大的尺寸,比任何类似的PNG文件都要大得多。

但是,您需要注意的是,一旦图像作为位图加载到内存中,无论从哪种类型的文件加载,它都将消耗可预测的内存量。

这是因为位图图像每个像素使用精确的内存量(事实上,对于标准的32位图像,它的每像素32位,不出所料)。因此,您可以通过将像素的宽度乘以像素的高度并将其乘以4(即每字节32/8位),轻松计算图像所需的内存(假设它是32位图像)。这将告诉您将图像的位图数据存储在RAM中需要多少字节。

因此640 x 480像素,32位图像使用:640 * 480 * 4 = 1228800字节,刚刚超过1兆字节。使用此位图作为后备存储的UIImage对象将为其添加少量开销。

值得注意的是,iMac等上使用的Apple 27英寸显示器的分辨率为2560 x 1440.只需要保存桌面的位图图像就可以达到14 MB的RAM! / p>