objective-c - UIImageView 中的 JPG 图像内存占用

标签 objective-c ios cocoa-touch cocoa

我知道 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/

相关文章:

ios - 从远程 plist 访问内容

ios - 当 UICollectionView 将填充单元格并快速获取高度时

iphone - DTGridView 在滚动时丢失内容

cocoa-touch - cocoa /iPad 如何在 alpha == 0 时保持 UIButton 可点击?

ios - 如何在 Playground 下载图像后更新 UIImageView

iphone - 如何在键盘处于事件状态时隐藏 iPhone 上的文本字段光标

iOS - 从容器内嵌入的 UITableView 检索父 View 中的单元格标题

objective-c - UITextView 上的 UITableViewCell 选择

iphone - 使用 UITapGestureRecognizer 根据 iPhone 中的手指触摸位置添加新 View

ios - 如何自定义相机 View 并捕获叠加中的部分?