1、图像的存储格式
1)黑白图像
图片只有黑色和白色,分别用对应的二进制编码0和1进行存储。
2)8位索引图像
将一个图像存储为一个数据矩阵X和一个调色板矩阵MAP
数据矩阵如上图,用来存储一张图片各像素的颜色索引,通过索引查询调色板,如下图
3)灰度图像
各像素信息由一个量化的灰度级来描述,没有彩色信息。如下图,意思就是用灰度深浅变化描述一张图。
灰度图像除了用矩阵表示,也可以用8位索引方式,调色板矩阵进行灰度索引。
4)彩色图像
方式1: 8位彩色索引,调色板矩阵进行RGB值索引。
方式2: 真彩色图像表示,每一个像素用RGB值表示。
2 图像文件格式
- BMP 格式:标准格式
- GIF格式:用于不同平台上交流和传输, 而不是作为文件的存储格式。
- TIFF格式:考虑了扩展性、方便性和可修改性,是最复杂的一种
- JPEG格式
1)BMP文件存储格式
a BMP文件组成
BMP文件结构 |
---|
位图文件头结构 |
位图信息头结构 |
位图颜色表 |
位图像素数据 |
b 文件头
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // BM 2字节
DWORD bfSize;// 文件大小 4字节
WORD bfReserved1;// 0 2字节
WORD bfReserved2;// 0 2字节
DWORD bfOffBits; //位图数据的起始位置,即位图文件头+位图信息头+调色板 的大小 4字节
}BITMAPFILEHEADER;
c 信息头
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;//位图信息头的大小,为40
LONG biWidth;//位图宽度
LONG biHeight;//位图高度
WORD biPlanes; //固定为1
WORD biBitCount; // 每个像素所需的位数,1-黑白图,4-16色,8-256色,24-真彩色
DWORD biCompression; // 位图压缩类型,0为不压缩
DWORD biSizeImage; // 位图的大小,即位图全部像素占用的字节数
LONG biXPelsPerMeter; //水平分辨率
LONG biYPelsPerMeter; //垂直分辨率
DWORD biClrUsed; // 颜色数
DWORD biClrImportant; // 重要的颜色数 0为所有都重要
}BITMAPINFOHEADER;
d 颜色表
typedef struct tagRGBQUAD
{
BYTE rgbBlue;// 蓝色
BYTE rgbGreen; // 绿色
BYTE rgbRed; // 红色
BYTE rgbReserved;// 0
} RGBQUAD;
e 位图信息
struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader;//信息头
RGBQUAD bmiColors[1]; // 颜色表
} BITMAPINFO;
版权声明:本文为qq_41569098原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。