画像のネガ変換

解説


   RGBのカラー画像CBitmap m_cBitmapをネガ画像に変換する。

   変換は単にRGBのそれぞれを反転するだけ、下記の式を使用。

     出力画素(R) = 255 - R
     出力画素(G) = 255 - G
     出力画素(B) = 255 - B


   当然ながら2回変換すればもとの色調の画像に戻る。




//
//		ネガポジ変換
//
bool	CDIBitmap::InvertRGB(void)
{
	int		i;
	int		j;
	int		n;
	BITMAP	sBitmap;
	DWORD	dwLineBytes;
	DWORD	dwSizeImage;
	BYTE*	pBuffer;

	m_lpcBitmap->GetBitmap(&sBitmap);

	dwSizeImage	 = (DWORD)(sBitmap.bmWidthBytes * sBitmap.bmHeight);
	dwLineBytes = sBitmap.bmWidthBytes;

	pBuffer = new BYTE[dwSizeImage + 1];

	m_lpcBitmap->GetBitmapBits(dwSizeImage,pBuffer);

	n = 0;
	for(j = 0; j < sBitmap.bmHeight; j++)
	{
		for(i = 0;i < sBitmap.bmWidth; i++)
		{
			pBuffer[n + 0] = 255 - pBuffer[n + 0];
			pBuffer[n + 1] = 255 - pBuffer[n + 1];
			pBuffer[n + 2] = 255 - pBuffer[n + 2];
			n += 3;
		}
		n = j * dwLineBytes;
	}

	m_lpcBitmap->SetBitmapBits(dwSizeImage,pBuffer);		//CBitmapへの保存
	delete	pBuffer;

	return	true;
}

トラックバック

この一覧は、次のエントリーを参照しています: 画像のネガ変換:

» 画像のネガ変換(高速版) 送信元 dinop.com
RGBのカラー画像CBitmap m_cBitmapをネガ画像に... [詳しくはこちら]


カテゴリー「VC++ TIPS」 のエントリー