我知道 PNG 图像被压缩,当作为 UIImages 加载到 UIImageView 时,它们占用的内存比原始文件多得多。这也适用于 JPG 图像吗?
最佳答案
简短回答:是的。
长答案: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 来保存桌面的位图图像!
关于objective-c - UIImageView 中的 JPG 图像内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710080/