画像のブラー処理

解説

 ブラー処理。処理方法はPlatform SDKのサンプルと同じ。
 あるピクセルとその右側1つ飛ばした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() - 3; x+=3)
			{
				nPos = x + (y * bitmapData.Stride) / sizeof(RGBTRIPLE);

				//右方向ブラー
				pTmp[nPos].rgbtRed   = (pTmp[nPos].rgbtRed + pTmp[nPos + 2].rgbtRed) >> 1;
				pTmp[nPos].rgbtGreen = (pTmp[nPos].rgbtGreen + pTmp[nPos + 2].rgbtGreen) >> 1;
				pTmp[nPos].rgbtBlue  = (pTmp[nPos].rgbtBlue + pTmp[nPos + 2].rgbtBlue) >> 1;
			}
		}
		pImage->UnlockBits(&bitmapData);


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