【问题标题】:JPG image memory footprint in UIImageViewUIImageView 中的 JPG 图像内存占用
【发布时间】:2012-01-03 09:21:32
【问题描述】:

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

【问题讨论】:

    标签: objective-c ios cocoa-touch cocoa


    【解决方案1】:

    简短回答:是的。

    长答案: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 兆字节的 RAM!

    【讨论】:

    • 一台配备 Retina 显示屏的 iPad(2048 年 x 1536 年)的每个背景图像将使用 12.5 兆字节。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2012-06-20
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多