计算图片占据的内存大小
共 1262字,需浏览 3分钟
·
2024-08-04 08:00
Q1:一张 png 格式的图片,图片文件大小为 55.8KB,那么它加载进内存时所占的大小是多少?
图片的分辨率是 1080*452,而我们在电脑上看到的这张 png 图片大小仅有 55.8KB,那么问题来了:
我们看到的一张大小为 55.8KB 的 png 图片,它在内存中占有的大小也是 55.8KB 吗?
理清这点蛮重要的,因为碰到过有人说,我一张图片就几 KB,虽然界面上显示了上百张,但为什么内存占用却这么高?
所以,我们需要搞清楚一个概念:我们在电脑上看到的 png 格式或者 jpg 格式的图片,png(jpg) 只是这张图片的容器,它们是经过相对应的压缩算法将原图每个像素点信息转换用另一种数据格式表示,以此达到压缩目的,减少图片文件大小。
而当我们通过代码,将这张图片加载进内存时,会先解析图片文件本身的数据格式,然后还原为位图,也就是 Bitmap 对象,Bitmap 的大小取决于像素点的数据格式以及分辨率两者了。
所以,一张 png 或者 jpg 格式的图片大小,跟这张图片加载进内存所占用的大小完全是两回事。你不能说,我 jpg 图片也就 10KB,那它就只占用 10KB 的内存空间,这是不对的。
那么,一张图片占用的内存空间大小究竟该如何计算?
图片占据的内存大小取决于多个因素,主要包括以下几点:
1.图像尺寸(像素): 图像的尺寸决定了图像包含的像素数量。一个像素通常由红、绿、蓝三个颜色通道组成,每个颜色通道通常占据一个字节。因此,图像的尺寸越大,占据的内存空间就越大。2.颜色深度: 颜色深度指的是每个像素所需的位数来表示颜色。常见的颜色深度有8位(每个通道256种颜色)、24位(真彩色,每个通道约1670万种颜色)等。颜色深度越高,每个像素占据的内存空间就越大。3.压缩方式: 图像可以以不同的压缩方式存储,例如JPEG、PNG等。不同的压缩方式会影响图像的内存占用大小。压缩率越高,图像占据的内存空间就越小。4.图像格式: 不同的图像格式(如JPEG、PNG、GIF等)在存储时会占据不同的内存空间。一些格式支持透明度、动画等特性,这也会影响内存大小。
计算图片占据的内存大小的简单公式为:
内存大小=图像宽度×图像高度×颜色深度
颜色深度是指用于表示每个像素颜色的位数。计算颜色深度的方法取决于颜色模型和位数。对于常见的 RGB 色彩模型,颜色深度的计算公式如下:
颜色深度 = 每个像素的位数 = R位数 + G位数 + B位数
例如,如果一个像素使用 8 位来表示红色、8 位来表示绿色和 8 位来表示蓝色,那么这个像素的颜色深度就是 8 + 8 + 8 = 24 位。
在计算颜色深度时,还需要考虑是否有透明度通道。如果有透明度通道(比如 RGBA 模型),需要将透明度位数也计入颜色深度的计算中。