| 단계 | 코드작성 |
| 버퍼 생성 | SimpleBmp bmp; bmp.Create(gWidth, gHeight, 8); // 또는 bmp.Create(gWidth, gHeight, 24); |
| Bitmap(gray,rgb) 불러오기 | wchar_t szFilter[] = _T("Image (*.BMP) | *.BMP;*.GIF;*.JPG | All Files(*.*)|*.*||"); CFileDialog dlg(TRUE, _T("bmp"), _T("test"), OFN_HIDEREADONLY, szFilter); if (dlg.DoModal() != IDOK) return; // bmp파일 불러오기 SimpleBmp bmp; bmp.Load(dlg.GetPathName().GetBuffer(0)); bmp.Draw(&m_View); // m_View는 CStatic 이며 picture control 이다. AfxMessageBox(bmp.Info()); // 비트맵 정보를 보여준다. // CDC* pDC = m_View.GetDC(); // bmp.Draw(pDC); |
| Bitmap을 파일로 저장하기 | wchar_t szFilter[] = _T("Image (*.BMP) | *.BMP;*.GIF;*.JPG | All Files(*.*)|*.*||"); CFileDialog dlg(FALSE, _T("bmp"), _T("test"), OFN_HIDEREADONLY, szFilter); if (dlg.DoModal() != IDOK) return;
bmp.Save(dlg.GetPathName().GetBuffer(0)); //bmp.Save( dlg.GetPathName().GetBuffer(0) , rawbuff, 640,480, 8); // 저장하기 (8: gray,24: rgb) |
| raw buff로 불러오기 | BYTE* rawbuff = NULL; // Load()함수에서 자동 생성 // BYTE* rawbuff = new [640*480]; // gray // BYTE* rawbuff = new [640*480*3]; // color
SimpleBmp bmp; bmp.Load(dlg.GetPathName().GetBuffer(0)); bmp.GetRaw(&rawbuff); // Raw 버퍼 얻기, 자동으로 메모리 할당 함. bmp.Draw(pDC);
// bmp.Draw(pDC,0,0,100,100); // bmp.Draw(m_View); |
| 이진 영상 처리하기 | SimpleBmp bmp; BYTE* rawbuff=NULL; // 꼭 NULL 처리해 준다. bmp.GetRaw(&rawbuff); // Raw 버퍼 얻기, 자동으로 메모리 할당 함. // 이진영상처리 BYTE* val; for (int i = 0; i < bmp.m_height; i++) { for (int j = 0; j < bmp.m_width; j++) { val = &rawbuff[i*bmp.m_width + j]; if(*val<128) *val = 0; else *val = 255; } } bmp.SetRaw(rawbuff, bmp.m_width, bmp.m_height, bmp.m_bitCount); bmp.Draw(m_View); |