图像的bits per pixel(bpp)和bit depth是否可以不一致?
结论
bits per pixel(简称bpp)和bit depth(位深度)是完全不同的两个概念,数值完全可以不一致,二者不存在必然相等的关系。
二者的核心区别
- bit depth(位深度):是图像的固有编码属性,指单个像素的原始未压缩颜色数据占用的比特数,和图像的存储压缩状态无关。你手中的24位PNG是标准的RGB三通道各8位位深度,单像素原始数据固定占24bit,这个值不会随压缩率变化。
- 你计算得到的bpp:是通过公式
bpp = Scomp / NPixels算出的压缩后平均单像素占用的存储空间大小,这个数值和图像采用的压缩算法、本身的内容复杂度直接相关。PNG属于无损压缩格式,会自动消除图像中的数据冗余(比如连续重复的同色区域、可预测的颜色变化规律),压缩后的总文件大小远小于未压缩的原始像素总大小,所以你算出来的平均bpp低于24位的位深度、得到18左右的结果是完全正常的。
补充验证
如果你把这张图转成无压缩的BMP格式,再用同样的公式计算bpp,得到的结果就会和24位的bit depth基本一致,只有这种无压缩存储的场景下二者数值才会相等。如果换成JPG这类有损压缩格式存储同一张图,bpp甚至可以低到1以下,和bit depth的差距会更大。
内容的提问来源于stack exchange,提问作者EmberFlyWeight
相关产品推荐
相关产品推荐

