二维码
明星姓名
  • 明星姓名
  • 常见问题
  • 行业资讯
  • 明星行程
  • 明星标签
  • 品牌标签
搜索
TOP5热门标签: 一瓯春 花儿与少年2026 兰香如故 心动的信号第九季 披荆斩棘2026 更多>>
当前位置: 首页 > 常见问题 > 为什么两张图片dpi、分辨率都一样,文件体积大小却相差很大?

为什么两张图片dpi、分辨率都一样,文件体积大小却相差很大?

为什么两张图片dpi、分辨率都一样,文件体积大小却相差很大?

 

 

这要从图片的存储方式说起

 

一张彩色图片都是由3张黑白图片组成的,那3张灰度(黑白)图片分别是图片中红色、绿色、蓝色的信息,显示的时候红绿蓝3个通道的图片合起来显示出彩色的图片:

 

 

也就是说,红绿蓝3个通道的取值是独立的。而每个通道的一个像素点是一个取值为0~255的整数。

 

 

3个通道的值合起来就是我们常常表示的一个像素点: RGB(255,33,222),图片压缩的本质就是去除冗余信息、保留有效信息。图片所含信息量越多、体积越大,能压缩的空间也就越少,而不同颜色组成的图片所含信息量是不同的!

 

下面说的图片体积都是压缩后(包括无损压缩)的体积。

 

 

红色有2个0值通道,橙色1个,紫色没有。

 

所以所含信息: 红色lt;橙色lt;深紫色(这只为便于理解是给出一个直观感受:色彩表示方式会影响图片大小)

 

没有什么图片是只有一种颜色,实际上准确来说是色调影响图片的大小:红色调的图片信息集中在红色通道,而橙色调图片的信息分散在红色和绿色通道。不同色调的图片大小不同,而一种颜色的图片重复信息太多、压缩空间太大,不明显。而当图片通道值分布的更广(0~255)时差距就体现出来了。

 

比如做一个纯色彩的径向渐变(从某个色彩渐变到纯黑的圆形渐变,之所以不用单方向的线性渐变是为了使压缩的效果体现的更明显)

 

 

自己可以用PhotoShop等图片编辑工具试一试,不过要记得使用存储为Web格式,并且把元数据选项设置为”无“,这么做可以剔除图片其他附属信息的干扰。如果主色调是红色这种信息只在一个通道的图片体积就要小(可压缩空间大):

 

 

//实际上红色色调的图,算是使用2个通道(另外两个通道值数值是相等值)

 

//青色色调的图算使用是2~3通道之间(一部分两个通道数值是相等,另一部分3个通道都不相等)

 

 

纯红色调(2.19MB) - (255,0,0)

 

 

而当用这种青色,这种信息要占用2个通道的颜色时:

 

 

青色调(2.71MB) -(0,255,216)

 

 

2.19:2.71,有20%的体积差别,这已经不是细微差别了,而用到三个通道的紫色(3.09MB)就有了30%的差距了。

 

 

紫色调(3.09MB) - (184,35,105)

 

 

 

饱和度对图片体积的影响

 

前面说的是色相对图片体积的影响,而饱和度对图片体积也有影响。饱和度越低,色彩RGB三个值越接近,也就是说值变化的范围越小,所含信息越少,可压缩空间就越大。

 

低饱和度的颜色:

 

 

当饱和度降到0时:图片体积最小化了(亮度相同时),3通道值完全一样了。

 

0饱和度(1.8MB)

 

 

 

亮度对图片体积的影响

 

这个应该很好理解,本来一张图片色彩取值是0~255,(RGB:255,255,255 就是最亮的白色),亮度调低了,最大值就减小了,取值就变成0~125了,信息就被削减了,可压缩空间也就增加了,这是上面那张紫色调(3.09MB)降低亮度以后的图,只剩下2MB了,体积减小了1/3。

 

 

另外图片色彩的动态范围也会对体积产生影响(ps里用曲线或对比度调)

 

青.jpg(1.64MB)

 

 

紫.jpg(2.13MB)

 

 

 

一些补充

 

1.关于蓝色、紫色都是纯色,为什么色彩不同,压缩后体积大小却有变化

 

色彩都是人规定的,当人们规定所有色彩按RGB(红绿蓝)表示时,就决定了只有红、绿、蓝的图片压缩后体积会更小,纯紫色(255,0,255)跟蓝色(0,0,255)压缩后大小是差不多的,因为虽然要用两个通道表示,但是2个通道是相等的,不过只要不是那么纯,比如(234,0,255),大小就会变大很多。

 

 

2.关于有人还是不理解为什么一些颜色比另一些颜色占用空间大

 

可以用文本来类比,我们知道文本中中文所占空间要比字母、数字大,因为字母是用1个字节表示,而中文要用2个字节表示,有些少见的Unicode字符甚至要用3个字节表示。这是因为字母在编码上排在前面,而中文排在后面,用的数字更大,需要更多的空间存储。

 

颜色也是一样的,24位的颜色有256*256*256=16777216种。跟文本一样,编码色彩:256之前的色彩可以用一个字节表示,257~65536可以用2个字节表示,而再之后的色彩就必须用3个字节表示。有些色彩就是会比另一些存储下来占用空间大,而我们都用RGB作为基础标准,所以红绿蓝色调占用空间要小。

 

 

本文采编自知乎,作者“不知语冰”,著作权归作者所有。

https://www.zhihu.com/question/23450044/answer/33759435


TOP300热度明星
电话 微信 返回顶部