在计算机中存储一张图像时,通常采用的是二进制格式。图像文件通常由三部分组成:文件头、图像数据和颜色表(可选)。
文件头
文件头是一个包含文件元数据的区域。它通常包含了文件类型、尺寸、压缩方式、色彩模式等信息。各种图像格式的文件头结构不同。例如,BMP 格式的文件头长度为 14 字节,PNG 格式的文件头长度为 8 字节。
图像数据
图像数据是图片的主体部分,通常被称为画板或像素矩阵。它记录了每个像素的颜色值。在RGB颜色模式下,通常使用三个通道来表示红、绿、蓝三原色的颜色值。每个像素可以使用 1 个字节、2 个字节或 4 个字节来存储其颜色值。每个通道的取值范围通常是 0 到 255,即 8 比特。
颜色表
颜色表是一组颜色值的列表,用于在某些图片格式中对颜色进行索引。例如,在 GIF 格式中,颜色表最多可以包含 256 个颜色。每个颜色都有一个索引值,可以用来快速访问该颜色在图像数据中的位置。PNG 格式的文件中也可以包含颜色表,但是它们是可选的。
Bitmap 文件(.bmp)是一种常见的图像文件格式,它使用简单的文件头来描述图像的基本信息。Bitmap 文件的文件头通常由 14 字节长度的结构组成,其中包含了文件类型、大小、偏移量等信息。
下面是 Bitmap 文件头的基本结构:
- 文件类型(2 字节):用于标识文件类型,通常为 "BM"。
- 文件大小(4 字节):以字节为单位表示整个文件的大小。
- 保留字段(4 字节):保留字段,未使用。
- 图像数据偏移量(4 字节):从文件头开始到实际的图像数据之间的偏移量。
除了文件头之外,Bitmap 文件还包括了 DIB(Device-Independent Bitmap)信息,用于描述图像的尺寸、颜色深度、压缩方式等。DIB 信息紧随文件头,并且在很多情况下也被认为是文件头的一部分。
灰度图像是一种只包含亮度信息的图像,每个像素仅使用一个字节(8 位)来存储它的灰度值。通常,灰度值的范围是从 0 表示黑色到 255 表示白色。因此,灰度图像不需要使用颜色表。
彩色图像是由红、绿、蓝三个颜色通道组成的图像。它可以以不同的色彩模式储存,其中最常见的是 RGB(红绿蓝)色彩模式。在 RGB 色彩模式下,每个像素使用三个字节(24 位)来存储红、绿、蓝三个通道的颜色值。每个通道的取值范围仍然是 0 到 255。
对于某些图像格式,如 BMP、PNG、JPEG 等,彩色图像的颜色通道顺序可以在文件头中指定,以确保正确解析图像数据。