Portfolio[UWM] Techniki Multimedialne / PIRO

Mnożenie przez stałą bitmapę

Zadanie
Zaimplementować funkcję mnożącą przez stałą od bitmapę.

Obrazu wynikowym będzie zmiana kontraktu obrazu.

ma parametry funkcji:
  • _BitMap źródło obrazka,
  • _A stała o którą będziemy modyfikować obraz,
BitMap multiplyConst(BitMap _BitMap, float _A)
{
	// utworzenie tablicy LUT
	// aby uniknąć niepotrzebnego liczenia. 
	int oLUT[256], oTemp;
	for(int i = 0; i < 256; i++)
		oLUT[i] = ((oTemp = _A*i) > 255) ? 255 : (oTemp < 0) ? 0 : oTemp;

	// utworzenie kopii bitmapy
	BitMap oNew = _BitMap; 
	oNew.Pixels = Clone(_BitMap);

	// proces przetwarzania 
	for(int y = 0; y < _BitMap.Height; y++)
		for(int x = 0; x < _BitMap.Width; x++)
		{
			Pix oPix = Get_PIX(x,y,_BitMap);
			oPix.Light = oLUT[oPix.Light];
			oPix.Red = oLUT[oPix.Red];
			oPix.Green = oLUT[oPix.Green];
			oPix.Blue = oLUT[oPix.Blue];
			Set_PIX(x,y,oPix,oNew);
		}
	return oNew;
}

  • Administracja