美文网首页
iOS uiimage内存占用大小计算

iOS uiimage内存占用大小计算

作者: 蜗牛炒饭 | 来源:发表于2022-04-19 11:25 被阅读0次

今天突然遇到一个问题,UI给了很多设计图。但感觉很占内存。所以就想计算一下具体需要占用多少内存。
我们平时看到的png、jpg、webp这些图片格式,其实都是图片压缩格式。通过对应的算法来优化了大小以节省网络传输与本地保存所需的资源。但是当我们加载图片到内存中将要显示出来的时候是不能使用压缩格式,这样就不能显示图片了。计算机依赖每一个像素点中的数据来显示图片。例如iOS中的UIImange的每个像素点是由red+green+blue 三原色在加上alpha透明度组成的。三原色每一个的范围在0 ~ 255所以需要int8来存储一个值的大小。那么一个像素点的颜色就需要3*int8 在加上需要alpha的大小。alpha的范围是0 ~ 100 也是以int8来存储的。所以一个像素点就需要4个int8来存储,也就是一个int32的大小。


image.png

我们平时取颜色也可以看到这一点。一张图片由很多像素点组成每个像素点由rgb组成的。但是这里是取颜色可能获取不到alpha。那我们现在知道了每一个像素点的大小,得出一整张图片在内存中的大小就很容易了。width * height * int32 = 图片的内存大小。

if let imagea = UIImage.init(named: "ccc.png"){
      let size = imagea.cgImage.height * imagea.cgImage.bytesPerRow
}

解释一下这里bytesPerRow这个属性的意思,苹果官方文档上是这样描述的

bytesPerRow
The number of bytes per row of pixels in the input image data.

所以bytesPerRow 返回的是一张图片一行所占用的内存大小。单位是bytes。
所以我们这里只需要在乘以图片的高度就OK了。如果要转换为kb直接在除以1024就OK了。基本就是一张图片在内存中占用的大小。以一张400 * 400的图片为例。
400 * (400 * 4) / 1024 = 625KB
其中400*4 = bytesPerRow的值

相关文章

  • 如何得到UIImage的大小(KB)

    iOS 计算UIImage的占用内存大小: 注意: lenth/1000,不是1024,是1000!因为Mac和i...

  • iOS uiimage内存占用大小计算

    今天突然遇到一个问题,UI给了很多设计图。但感觉很占内存。所以就想计算一下具体需要占用多少内存。我们平时看到的pn...

  • 图片加载 内存优化

    图片加载内存优化 UIImage内存占用大小:image.size.width * image.size.heig...

  • UIImage 占用内存大小

    1、查看 AFNetworking 代码,里面的估算方法是 2、查看 CGImage 类,发现下面的方法:CGIm...

  • ios OC 图片压缩

    OC 版本(任意大小压缩) pragma mark - 修改图片大小,减小内存占用-(UIImage *)sca...

  • 2021 - OC(一)

    1、ios一个对象占用多少字节? 2、如何计算图片加载内存中占用大小? 3、VC生命周期 4、多个网络请求完毕执行...

  • 如何计算Java对象所占内存的大小

    摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论...

  • 如何计算Java对象所占内存的大小

    摘要 本文以如何计算Java对象占用内存大小为切入点,在讨论计算Java对象占用堆内存大小的方法的基础上,详细讨论...

  • 在iOS中高效的加载图片

    在iOS开发中,图片(UIImage)是我们在开发中,占用手机内存比较大的对象,如果在运行过程中,内存占用过大,对...

  • iOS性能优化-在iOS中高效的加载图片

    在iOS开发中,图片(UIImage)是我们在开发中,占用手机内存比较大的对象,如果在运行过程中,内存占用过大,对...

网友评论

      本文标题:iOS uiimage内存占用大小计算

      本文链接:https://www.haomeiwen.com/subject/oyrsertx.html