VC++ SaveBitmapToFile

原创 2012年03月29日 16:19:37
void SaveBitmapToFile( BYTE* pBitmapBits, LONG lWidth, LONG lHeight,WORD wBitsPerPixel, LPCTSTR lpszFileName )
{
    BITMAPINFOHEADER bmpInfoHeader = {0};
BITMAPFILEHEADER bfh = {0};
HANDLE hFile = NULL;
DWORD dwWritten = 0;


    // Set the size
    bmpInfoHeader.biSize = sizeof(BITMAPINFOHEADER);
    // Bit count
    bmpInfoHeader.biBitCount = wBitsPerPixel;
    // Use all colors
    bmpInfoHeader.biClrImportant = 0;
    // Use as many colors according to bits per pixel
    bmpInfoHeader.biClrUsed = 0;
    // Store as un Compressed
    bmpInfoHeader.biCompression = BI_RGB;
    // Set the height in pixels
    bmpInfoHeader.biHeight = -lHeight;
    // Width of the Image in pixels
    bmpInfoHeader.biWidth = lWidth;
    // Default number of planes
    bmpInfoHeader.biPlanes = 1;
    // Calculate the image size in bytes
    bmpInfoHeader.biSizeImage = lWidth* lHeight * (wBitsPerPixel/8); 


    
    // This value should be values of BM letters i.e 0×4D42
    // 0x4D = M 0x42 = B storing in reverse order to match with endian
    bfh.bfType=0x4D42;
    /* or
    bfh.bfType = ‘B’+(’M’ << 8);
    // <<8 used to shift ‘M’ to end
    */
    // Offset to the RGBQUAD
    bfh.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);
    // Total size of image including size of headers
    bfh.bfSize = bfh.bfOffBits + bmpInfoHeader.biSizeImage;
    // Create the file in disk to write
    hFile = CreateFile( lpszFileName,GENERIC_WRITE, 0,NULL,
                              CREATE_NEW /*OPEN_ALWAYS*/, FILE_ATTRIBUTE_NORMAL, NULL); 


    if( !hFile ) // return if error opening file
    {
        return;
    } 


    // Write the File header
    WriteFile( hFile, &bfh, sizeof(bfh), &dwWritten , NULL );
    // Write the bitmap info header
    WriteFile( hFile, &bmpInfoHeader, sizeof(bmpInfoHeader), &dwWritten, NULL );
    // Write the RGB Data
    WriteFile( hFile, pBitmapBits, bmpInfoHeader.biSizeImage, &dwWritten, NULL );
    // Close the file handle
    CloseHandle( hFile );

}


android 保存bitmap到SD卡

public void saveMyBitmap(String bitName,Bitmap mBitmap){  File f = new File("/sdcard/" + bitName + "...
  • CBirdLG
  • CBirdLG
  • 2010年09月20日 09:16
  • 31443

将Bitmap保存为文件File的方法

/** * 保存文件 * @param bm * @param fileName * @throws IOException */ ...
  • fxtxz2
  • fxtxz2
  • 2012年10月26日 13:35
  • 30059

C++将HBITMAP保存为bmp图片

BOOL CBMP2ArrayMultiplyDlg::SaveBitmapToFile(HBITMAP hBitmap, CString szfilename) { HDC hDC; ...
  • shufac
  • shufac
  • 2015年11月23日 17:02
  • 3618

将rgb图像数据保存为BMP格式图片的方法

extern "C" { #include #include #include } typedef long LONG; typedef unsigned long D...
  • chyxwzn
  • chyxwzn
  • 2012年12月27日 15:38
  • 15227

GDI/GDI+(1): 将Bitmap导出为Byte[]

最近遇到一个问题,需要将Bitmap中的图像Buffer导出来。 有人说用GDI的GetDIBits方法,有人说用GDI+的LockBits方法。 找了很多资料,都没找到可直接运行的代码,只有...
  • oldmtn
  • oldmtn
  • 2014年03月27日 11:35
  • 5122

VC++ SaveBitmapToFile

void SaveBitmapToFile( BYTE* pBitmapBits, LONG lWidth, LONG lHeight,WORD wBitsPerPixel, LPCTSTR lpsz...
  • sdafrma4
  • sdafrma4
  • 2012年03月29日 16:19
  • 761

android中保存Bitmap图片到指定文件夹中的方法

public void saveBitmapToFile(String path, Bitmap bm, String picName) { File f = new File(path...
  • u013144863
  • u013144863
  • 2016年05月31日 00:24
  • 1154

SaveBitmapToFile

int   SaveBitmapToFile(HBITMAP   hBitmap   ,           LPSTR   lpFileName)   //hBitmap   为刚才的屏幕位图句...
  • chaoguodong
  • chaoguodong
  • 2011年12月23日 11:59
  • 1692

VC/MFC实现:位图CBitmap对象保存成为bmp,bmp转jpg,截屏保存jpg(GDI+)

位图对象保存为bmp: 加载位图及路径 strExtension = "bmp"; m_strFile = filedlg.GetPathName() + '.' + strExtension; ...
  • WHEgqing
  • WHEgqing
  • 2016年02月25日 18:08
  • 752

保存抓图的简单实现

实现类似的抓屏功能(简单的截图功能)其实只要两个函数就行了,以下从网上摘抄的一段代码的改写, 算是原创吧(http://www.wenyiwen.cn/a24/how161448.htm):函数1: ...
  • seu07201213
  • seu07201213
  • 2006年07月16日 19:24
  • 8156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC++ SaveBitmapToFile
举报原因:
原因补充:

(最多只允许输入30个字)