본문 바로가기
IT 개발, develop/Image processing

화면 출력하기 convert to HBITMAP

by newly everyday 2015. 9. 16.

출처 블로그>서버(판타, fanta) | 판타

원문 http://blog.naver.com/fantajeon/80027908479

HBITMAP CreateBitmap(IplImage *pImage, int nSize)
{
 // 현재 응용프로그램의 스크린과 호환되는 memory dc를 생성한다.
 HDC         hDC = ::CreateCompatibleDC(0);
 BYTE        tmp[sizeof(BITMAPINFO)+255*sizeof(RGBQUAD)];
 BITMAPINFO *bmi = (BITMAPINFO*)tmp;
 HBITMAP     hBmp;
 int i;
 int w = pImage->width, h = pImage->height;
 int bpp = pImage->nChannels*8;

 memset(bmi,0,sizeof(BITMAPINFO));
 bmi->bmiHeader.biSize     = sizeof(BITMAPINFOHEADER);
 bmi->bmiHeader.biWidth    = w;
 bmi->bmiHeader.biHeight   = h;
 bmi->bmiHeader.biPlanes   = nSize;
 bmi->bmiHeader.biBitCount = bpp;
 bmi->bmiHeader.biCompression = BI_RGB;
 bmi->bmiHeader.biSizeImage  = w*h*1;
 bmi->bmiHeader.biClrImportant  =0 ;
 switch(bpp)
 {
 case 8 :
        for(i=0 ; i < 256 ; i++)
        {
   bmi->bmiColors[i].rgbBlue = i;
   bmi->bmiColors[i].rgbGreen= i;
   bmi->bmiColors[i].rgbRed= i;
        }
        break;
 case 32:
 case 24:
        ((DWORD*) bmi->bmiColors)[0] = 0x00FF0000; /* red mask  */
        ((DWORD*) bmi->bmiColors)[1] = 0x0000FF00; /* green mask */
        ((DWORD*) bmi->bmiColors)[2] = 0x000000FF; /* blue mask  */
        break;
 }
 hBmp = ::CreateDIBSection(hDC,bmi,DIB_RGB_COLORS,NULL,0,0);
 ::SetBitmapBits(hBmp, pImage->imageSize, pImage->imageData);
 ::DeleteDC(hDC);
 return hBmp;
}


'IT 개발, develop > Image processing' 카테고리의 다른 글

The Rete Matching Algorithm  (0) 2015.09.16
A* 알고리즘  (0) 2015.09.16
real time rendering 2판  (2) 2015.09.16
색체심리학 개요  (0) 2015.09.16
색관련사이트  (0) 2015.09.16

댓글