bmp结构的一点小问题?

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:50:15
3. 位图信息头

BMP位图信息头数据用于说明位图的尺寸等信息。
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 本结构所占用字节数
LONGbiWidth; // 位图的宽度,以像素为单位
LONGbiHeight; // 位图的高度,以像素为单位
WORD biPlanes; // 目标设备的级别,必须为1
WORD biBitCount// 每个像素所需的位数,必须是1(双色),
// 4(16色),8(256色)或24(真彩色)之一
DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage; // 位图的大小,以字节为单位
LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数
LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数
DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数
DWORD biClrImportant;// 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;

其中的
LONGbiWidth; // 位图的宽度,以像素为单位
LONGbiHeight; // 位图的高度,以像素为单位

LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数
LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数
不是一回事吗?

biWidth为水平像素数
biHeight为垂直像素数
比如一幅图片640*480,就是说水平640个像素,垂直480个像素,但是并没有指定该附图的精度,这幅图片在不同的设备上高宽显示会不相同。

biXPelsPerMeter和biYpelsPerMeter则表示图片像素的精度,做个极端的假设,假如每米一个像素,那么640*480就需要水平640m,垂直480m,这么大的尺寸,估计坐在飞机上你才能看到这幅图片的全貌

当然不是一回事情啊。

前者的长宽,以像素为单位。
后者是分辨率,是每米的像素数。

耶!你真有才!