gpt4 book ai didi

ios - UIImage 比它的 NSData 占用更多的内存

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:05 34 4
gpt4 key购买 nike

我正在使用以下代码从 NSData 加载一个 UIImage

var image = UIImage(data: data!)

但是,有一个奇怪的行为。

一开始我用的是png数据,NSData一个大概80kB。

当我用数据设置UIImage时,UIImage每个占用128kb。

(用Allocation instrument检查,ImageIO_PNG_Data的大小)

然后我改为使用 jpeg,NSData 变成了每个 7kb 左右。

但是,UIImage 每个都是 128kb,所以在显示图像时我没有内存优势! (NSData 减少到 80kb -> 7kb 而 UIImage 仍然占用相同数量的内存)

很奇怪,为什么UIImage要占用128kb,而原始数据只有7kb?

我可以在不缩小 UIImage 本身大小的情况下通过 UIImage 减少内存使用量吗?

请注意,我不是在处理高分辨率图像,因此无法调整图像大小(NSData 已经是 7kb!!)

我们将不胜感激。

谢谢!!

最佳答案

当您访问 NSData 时,它通常被压缩(使用 PNGJPEG)。当您使用 UIImage 时,有一个未压缩的像素缓冲区,通常每个像素 4 个字节(一个字节分别用于红色、绿色、蓝色和 alpha)。还有其他格式,但它说明了基本思想,即可以压缩 JPEG 或 PNG 表示,当您开始使用图像时,它是未压缩的。

在您的结论中,您说调整大小不是一个选项并且 NSData 已经是 7kb。如果图像的分辨率大于分辨率(bounds/frame 的点乘以您正在使用它的 UIImageView 的设备比例)。是否调整大小的问题不是 NSData 大小的函数,而是 View 的分辨率。因此,如果您有一张 1000x1000 像素的图像,您在表格 View 的小拇指 View 中使用它,那么无论 JPEG 表示有多小,您都应该调整图像的大小。

关于ios - UIImage 比它的 NSData 占用更多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29045843/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com