如题,我现在只有指向位图数据BUFFER的指针
如何组建位图的文件头进而保存成文件呢?

解决方案 »

  1.   

    BITMAPFILEHEADER bmpfile;
    BITMAPINFOHEADER bmpinfo;
    //set bmpfile////////////////////////////
    bmpfile.bfType = 0x4d42; //'BM'
    bmpfile.bfReserved1 = bmpfile.bfReserved2 = 0;
        bmpfile.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
        bmpfile.bfSize = bmpfile.bfOffBits;//+10000-14;//m_nSize;
    //set bmpinfo///////////////////////////////////
        bmpinfo.biSize = sizeof(BITMAPINFOHEADER);
    bmpinfo.biWidth = 100;  //m_nW;
    bmpinfo.biHeight = 100;   //m_nH;
    bmpinfo.biPlanes = 1;
    bmpinfo.biBitCount = 24;
    bmpinfo.biCompression = BI_RGB;
    bmpinfo.biSizeImage = 0;
    bmpinfo.biXPelsPerMeter = 0;
    bmpinfo.biYPelsPerMeter = 0;
    bmpinfo.biClrUsed = 0;
    bmpinfo.biClrImportant = 0;
        CFile file("abc.bmp",CFile::modeCreate|CFile::modeWrite);
        file.Write(&bmpfile,sizeof(BITMAPFILEHEADER));
    file.Write(&bmpinfo,sizeof(BITMAPINFOHEADER));
        m_RGB = new RGBTRIPLE[100*100];
    for(int i=0;i<10000;i++)         //次循环填写数据  这边举例是  100 * 100 的图片
    {   
    m_RGB[i].rgbtBlue=(5);
    m_RGB[i].rgbtGreen =(0);
    m_RGB[i].rgbtRed = (155);
    }
    file.Write(m_RGB,30000);