【问题标题】:Large jpeg using more memory than smaller jpeg when loaded in a UIImageView. Why?在 UIImageView 中加载时,大型 jpeg 比较小 jpeg 使用更多内存。为什么?
【发布时间】:2018-02-17 04:04:14
【问题描述】:

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

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

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

谁能解释这里发生了什么?我想确认继续调整图像大小/压缩图像是可取的。

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

干杯。

【问题讨论】:

  • 图片的尺寸是多少?您提供大文件的尺寸,但不提供小文件的尺寸。
  • @user3344003 抱歉延迟回复。较小的文件的尺寸为 3788x2532。我正在使用的设备是 iPad Mini 第 4 代。

标签: ios cocoa-touch memory uiimageview jpeg


【解决方案1】:

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

UIImage 每像素 x 高度 x 占用 4 字节 (RGBA) - 因此对于 4640 x 3472 图像,您看到的是 64,440,320 字节 - 与磁盘上的 11MB 完全不同

【讨论】:

  • 我了解磁盘上的文件不等于在应用程序中呈现它所需的实际内存。我对您提到的小型(500kb)jpeg 和大型(11mb)jpeg 之间的内存行为差异感到困惑。具体来说,较小的文件似乎比大文件使用更多的应用程序内存,这看起来很奇怪。较小的文件似乎也直接导致应用程序的内存占用,而较大的文件看起来由操作系统在其他地方处理。
猜你喜欢
  • 2012-09-24
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多