画像のポスタライズ処理

解説

 ポスタライズ処理。絵画のような画像になる処理方法は単純にアンド処理で諧調をつぶすだけ。 処理方法はPlatform SDKのサンプルと同じ。
 ソースコード中に太字で示した「0xe0」がアンド処理の指定場所。ここでは上位3ビットを残して いる。さらに極端なポスタライズにしたい場合は「0xc0」(上位2ビット)などに変えればいい。

実行例



ソースコード

 GDI+を利用した画像処理テストのスケルトンの 画像処理部分を以下のように変更する。



		////////////////////////////
		//画像処理
		//
		UINT		x;
		UINT		y;
		UINT		nPos;
		RGBTRIPLE*	pTmp;
		Gdiplus::BitmapData		bitmapData;

		pImage->LockBits(&Gdiplus::Rect(0,0,pImage->GetWidth(),pImage->GetHeight())
			,Gdiplus::ImageLockModeRead | Gdiplus::ImageLockModeWrite,PixelFormat24bppRGB,&bitmapData);

		pTmp = (RGBTRIPLE*)bitmapData.Scan0;
		for(y = 0; y < pImage->GetHeight(); y++)
		{
			for(x = 0; x < pImage->GetWidth(); x++)
			{
				nPos = x + (y * bitmapData.Stride) / sizeof(RGBTRIPLE);

				//ポスタライズ
				pTmp[nPos].rgbtRed   &= 0xe0;
				pTmp[nPos].rgbtGreen &= 0xe0;
				pTmp[nPos].rgbtBlue  &= 0xe0;
			}
		}
		pImage->UnlockBits(&bitmapData);


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