位图初级(二)——相关数据结构

 这是当时媳妇对我博客的评价,哈哈: 小雨 2007-1-7 14:18 顶~ 这个最最有用!! 真是好人啊好人[emot]5[/emot]

BITMAPFILEHEADER
    BITMAPFILEHEADER结构包含关于类型,大小,布局设备无关的位图信息。
    typedef struct tagBITMAPFILEHEADER { 
      WORD    bfType; 
      DWORD   bfSize; 
      WORD    bfReserved1; 
      WORD    bfReserved2; 
      DWORD   bfOffBits; 
    } BITMAPFILEHEADER, *PBITMAPFILEHEADER; 
    成员
        bfType
            声明文件类型,必须是BM。
        bfSize
            声明位图文件的大小,以字节为单位。
        bfReserved1
            保留,必须为0。
        bfReserved2
            保留,必须为0。
        bfOffBits
            声明偏移量,从BITMAPFILEHEADER结构开始到位图数据,以字节为单位。
    备注
        在设备无关文件中,BITMAPINFOHEADER结构紧随其后。

BITMAPINFOHEADER
    BITMAPINFOHEADER结构包含设备无关位图的大小以及色彩格式的信息。
    typedef struct tagBITMAPINFOHEADER{
      DWORD  biSize; 
      LONG   biWidth; 
      LONG   biHeight; 
      WORD   biPlanes; 
      WORD   biBitCount; 
      DWORD  biCompression; 
      DWORD  biSizeImage; 
      LONG   biXPelsPerMeter; 
      LONG   biYPelsPerMeter; 
      DWORD  biClrUsed; 
      DWORD  biClrImportant; 
    } BITMAPINFOHEADER, *PBITMAPINFOHEADER; 
    成员
        biSize
            声明这个结构体所需要的字节数。
        biWidth
            声明位图的宽,以像素为单位。
        biHeight 
            声明位图的高,以像素为单位。如果biHeight是正数,位图是一个自下而上的设备无关位图,起点在左下角。如果biHeight是负数,位图是一个自上而下的设备无关位图,起点在左上角。
            如果biHeight是负数,指示一个自上而下的设备无关位图,biCompression就必须为BI_RGB或者BI_BITFIELDS。自上而下的设备无关位图不能被压缩。
        biPlanes
            为目标装置声明平面数,这个值必须是1。
        biBitCount
            声明每像素位数。BITMAPINFOHEADER的成员biBitCount确定了定义每一个像素需要的位数,以及位图所需颜色的最大值。这个成员必须是以下的值:
  
  Value   Meaning
    0        JPEG或者PNG格式声明每像素位数
    1        位图是单色的,包含两个颜色信息,位图数组中的每一位代表一个像素。如果这一位是0,那么这个点的颜色就是调色板中第一个RGBQUAD结构所定义的颜色。如果这一位是1,那么这个点的颜色就是调色板中第二个GBQUAD结构所定义的颜色。
    4        位图最多有16种颜色。调色板数组中有16个元素。位图中的每一个像素由一个4位的索引指向调色板。举个例子,位图的第一个字节是0x1F,这个字节代表两个像素,第一个像素颜色是调色板中的第二个RGBQUAD结构所定义的颜色,第二个像素颜色是调色板中的第十六个RGBQUAD结构所定义的颜色。
    8        位图最多有256种颜色。调色板中有256个元素。每一个字节代表一个颜色。
    16       位图有2^16种颜色。如果biCompression为BI_RGB,则没有调色板。每两个字节代表一个像素。每一个颜色分量中,使用5位分别表示红绿蓝的相对强度。低5位表示蓝色,然后的5表示绿色,在5位表示红色。最高位没有使用。
    24       位图最多有2^24种颜色。没有调色板。位图数组中每三个字节代表一个像素的红绿蓝相对强度。
        biCompression
            BI_RGB
        biSizeImage
            声明图像的大小,以字节为单位。如果是BI_RGB位图,可能是0。
        biXPelsPerMeter 
            声明横向分辨率,以像素每米为单位。
        biYPelsPerMeter
            声明纵向分辨率,以像素每米为单位。
        biClrUsed
            一般为0。
        biClrImportant
            声明显示这个位图需要多少种颜色,如果是0,则需要所有颜色。

RGBQUAD
    RGBQUAD结构描述红绿蓝相对亮度
    typedef struct tagRGBQUAD {
      BYTE    rgbBlue; 
      BYTE    rgbGreen; 
      BYTE    rgbRed; 
      BYTE    rgbReserved; 
    } RGBQUAD;   
    成员 
        rgbBlue
            声明蓝色强度
        rgbGreen
            声明绿色强度
        rgbRed
            声明红色强度
        rgbReserved
            保留,必须是0

发布了21 篇原创文章 · 获赞 6 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Perfecter/article/details/41686909
今日推荐