本文比较JPG、PNG、GIF、BMP四种常见的图片格式的优劣。
基本概念
首先需要了解电子图片的一些基本概念:
-
分辨率
- 可以用(水平像素数×垂直像素数)表示,即图片的长宽是多少个像素点。
- 也可以用DPI(Dots Per Inch)、PPI(Pixels Per Inch)表示,即每英寸内有多少个像素点。
-
位深度:指图片中的每个像素点用几个二进制位表示。这些二进制位有多少种取值,就能存储多少种颜色。
- 位深度可取值为1、4、8、16、24、32。
- 位深度为1 bit时,只能存储黑白两种颜色。
- 位深度为8 bit时,可以存储256种颜色。
- 位深度为24 bit时,可以存储2563种颜色。
-
颜色模式。
- 黑白图 :位深度为1 bit,由一排排0、1的二进制位组成。
- 灰度图 :位深度为8 bit,只有一个灰度通道,用0~256表示黑色、白色以及中间的254种灰色。
- 索引颜色 :位深度为8 bit,将图中的颜色数减少到256种以内,把它们记在一个调色板上,然后记录图中的每个像素点采用编号0~256中的哪种颜色。这样能减少图片体积,但是能表示的颜色数量有限。
- RGB :位深度为24 bit,又称为真彩色,有RGB三个通道,每个通道占8 bit。
- RBGA :位深度为32 bit,多了一个描述透明度的Alpha通道,每个通道占8 bit。
-
图片体积:即图片占用的存储空间。
- 比如一张分辨率为1080×720、位深度为24 bit的图片,其理论体积为:1080×720×(24/8)≈2.2MB。
-
压缩方式
- 不压缩:不压缩图片的体积,直接保存原图。
- 无损压缩:可以压缩图片的体积,且压缩时没有损失图片的任何质量。
- 有损压缩:可以压缩图片的体积,但压缩时降低了图片的质量。压缩率越高,画质越差。
比较四种图片格式
图片格式 | JPG/JPEG | PNG | GIF | BMP |
---|---|---|---|---|
位深度 | 最高为24 bit | 最高为32 bit | 最高为8 bit,画质差 | 最高为32 bit |
图片体积 | 较小 | 较大 | 很小 | 很大 |
能否压缩 | 有损压缩,压缩率可以很高(通过舍弃一些不影响人眼观看的细节,来压缩体积) | 无损压缩,压缩率低 | 无损压缩,压缩率高 | 不压缩 |
能否透明 | 不能 | 能(在RGB通道之外加了一个Alpha通道,用0~256表示透明度) | 能(但是不能控制透明度,要么完全透明要么不透明) | 不能 |
总结 | 适合保存色彩丰富、却要压缩体积的图片 | 适合保存色彩丰富、又不限制体积的图片、透明图层 | 适合保存色彩简单、而体积很小的图片。不仅可以存储单张图片,还支持用多帧组成动画 | 体积很大,不适合在网络传输 |
- 欢迎纠正
实验分析
- 在PhotoShop中创建一个1920×1080分辨率的画板,采用RGB模式(每个通道占8位)。清空画板使其透明,只能看到方格背景。
- 将这个图片分别保存为位深度为24 bit的jpg、png、bmp格式,以及位深度为8 bit的gif格式,结果如下。bmp图片由于不压缩,体积很大。
- 在透明画板上画一道彩虹:
- 再分别保存为四种格式的图片,结果如下。这里是使用默认的压缩率,实际上gif、jpg图片还可用压缩到更小的体积。
- 它们在PhotoShop中的显示效果如下:
- png:彩虹的两侧是透明的。彩虹的边缘从不透明逐渐淡化,直到完全透明。
- gif:彩虹的两侧是透明的。但边缘生硬,要么不透明,要么完全透明。
- jpg:透明信息被丢失,被纯白色填充。
- bmp:跟jpg图片看起来一样。