Guest User

Untitled

a guest
Jan 23rd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. void SaveBitmap(char *szFilename,HBITMAP hBitmap)
  2. {
  3. HDC hdc=NULL;
  4. FILE* fp=NULL;
  5. DWORD* pBuf=NULL;
  6. BITMAPINFO bmpInfo;
  7. BITMAPFILEHEADER bmpFileHeader;
  8. HANDLE hHeap;
  9.  
  10. do{
  11. hdc=GetDC(NULL);
  12. ZeroMemory(&bmpInfo,sizeof(BITMAPINFO));
  13. bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
  14. GetDIBits(hdc,hBitmap,0,0,NULL,&bmpInfo,DIB_RGB_COLORS);
  15. if(bmpInfo.bmiHeader.biSizeImage<=0)
  16. bmpInfo.bmiHeader.biSizeImage=bmpInfo.bmiHeader.biWidth*abs(bmpInfo.bmiHeader.biHeight)*(bmpInfo.bmiHeader.biBitCount+7)/8;
  17. hHeap = GetProcessHeap();
  18. if((pBuf = (DWORD*)HeapAlloc(hHeap, 0, bmpInfo.bmiHeader.biSizeImage))==NULL)
  19. {
  20. //MessageBox( NULL, "Unable to Allocate Bitmap Memory",
  21. break;
  22. }
  23.  
  24. bmpInfo.bmiHeader.biCompression=BI_RGB;
  25. GetDIBits(hdc,hBitmap,0,bmpInfo.bmiHeader.biHeight,pBuf, &bmpInfo,
  26. DIB_RGB_COLORS);
  27. if((fp = fopen(szFilename,"wb"))==NULL)
  28. {
  29. //MessageBox( NULL, "Unable to Create Bitmap File", "Error", MB_OK|MB_ICONERROR);
  30. break;
  31. }
  32. bmpFileHeader.bfReserved1=0;
  33. bmpFileHeader.bfReserved2=0;
  34.  
  35. bmpFileHeader.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+bmpInfo.bmiHeader.biSizeImage;
  36. bmpFileHeader.bfType='MB';
  37.  
  38. bmpFileHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
  39. fwrite(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp);
  40. fwrite(&bmpInfo.bmiHeader,sizeof(BITMAPINFOHEADER),1,fp);
  41. fwrite(pBuf,bmpInfo.bmiHeader.biSizeImage,1,fp);
  42. }while(false);
  43.  
  44. if(hdc) ReleaseDC(NULL,hdc);
  45.  
  46. if(pBuf) free(pBuf);
  47.  
  48. if(fp) fclose(fp);
  49.  
  50. }
Add Comment
Please, Sign In to add comment