6.7可逆压缩和非可逆压缩
最后,让我们来看一下图像文件的数据形式。图像文件的使用目的通常是把图像数据输出到显示器、打印机等设备上。Windows的标准图像数据形式为BMP,是完全未压缩的。由于显示器及打印机输出的bit (点)是可以直接映射(mapping)的,因此便有了BMP=bitmap这一名称。除BMP格式以外,还有其他各种格式的图像数据形式。比如JPEG格式、TIFF格式、GIF格式等。与BMP格式不同的是,这些图像数据都会用一些技法来对数据进行压缩。
BMP(Bitmap)是使用Windows自带的画笔来做成的一种图像数据形式。
JPEG(Joint Photographic Experts Group)是数码相机等常用的一种图像数据形式。
TIFF(Tag Image File Format)是一种通过在文件头中包含“标签”就能够显示出数据性质的图像数据形式。
GIF(Graphics Interchange Format)是由美国CompuServe开发的一种数据格式。这种格式要求色数不超过256色。
图像文件还可以使用与前文介绍的RLE算法、哈夫曼算法不同的其他压缩算法。这是因为,多数情况下,并不要求压缩后的图像文件必须还原到与压缩前同等的质量。与之相比,程序的EXE文件以及每个字符、数值都有具体含义的文本文件则必须要还原到和压缩前同样的内容。而对于图像文件来说,即使有时无法还原到压缩前那样鲜明的图像状态,但只要肉眼看不出什么区别,有一些模糊也勉强可以接受。这里,我们把能还原到压缩前状态的压缩称为可逆压缩,无法还原到压缩前状态的压缩称为非可逆压缩,如下图:
图6-7中列出了各种格式的图像文件。
其中,原始的图像文件是BMP格式。通过此图可以看出,JPEG格式和GIF格式的图像文件有一些模糊。这是因为JPEG格式的文件是非可逆压缩,因此还原后的图像信息有一部分是模糊的。而GIF格式的文件虽然是可逆压缩,但因为有色数不能超过256色的限制,所以还原后颜色信息会有一些缺失,进而导致了图像模糊。TIFF格式的图像文件虽然不模糊,但却比原始的BMP格式的文件还要大,这是为什么呢?我们知道,TIFF格式的文件中带有各种标签信息,是可以选择压缩格式的,而这里选择的是与BMP同样的无压缩方式。但由于与原始的图像数据相比,TIFF格式的文件中附加了标签信息,所以结果就比BMP格式的文件更大了。
压缩算法的种类大概有一二十种。之所以会存在如此多的压缩算法,是因为压缩比率、压缩需要的处理时间(程序的复杂程度)以及各种文件的需求等是不一样的。