GSI

흑백의 이미지를 CxImage로 만들때 8비트, 24비트의 이미지로 만들 필요가 없습니다.
이때 1비트의 이미지로 해도 충분한 공간이 나온다는 얘긴데요.
아래의 코드는 1비트의 이미지를 생성하는 코드 입니다.

void GToleranceImage::MakeBuffer2Image()
{
 SAFE_DELETE( _pbuffer2Image );
 assert( _pbuffer2Image == NULL );
  // 넓이와 폭을 사용해서 이미지 버퍼를 생성합니다.
  // 이때 1비트의 이미지로 설정합니다.
 _pbuffer2Image = new CxImage( _width, _height, 1, CXIMAGE_FORMAT_BMP );

  // 이미지의 팔레트를 지정합니다.
  // 흑백 이미지를 만들거기 때문에 0번과 1번 팔레트를 설정합니다.
 _pbuffer2Image->SetPaletteColor(0, RGB(0, 0, 0));
 _pbuffer2Image->SetPaletteColor(1, RGB(255, 255, 255));

  // 해당 내용을 추가합니다.
  // SetPixelColor로 하지 않고, SetPixelIndex로 하게 됩니다.
 for( int y = 0; y < _height; y++ )
 {
  for( int x = 0; x < _width; x++ )
  {
   BYTE color = _bufferXY[y][x];
   if( color == 255 )
    _pbuffer2Image->SetPixelIndex( x, y, 1 );
   else
    _pbuffer2Image->SetPixelIndex( x, y, 0 );
  }
 }
 _pbuffer2Image->Flip();
}

Posted by gsi
: