HomepageSoftware,
Download
Software-
entwicklung
Tips und
Tricks
Nachrichten-
technik
Internet
Aktuelles,
Sonstiges
Infos,
Kontakt
Sitemap
|
Um bei einem
Rasterbild eine Gammakorrektur
vorzunehmen, kopieren Sie einfach die DIB und führen
dabei folgende Farbmanipulation durch:
HDIB
WINAPI GammaDIB(HDIB hDIB, double dftGamma /*=1.8*/)
{
...
double dftInvGamma = 1.0 / dftGamma;
...
// Bei RGB-DIB's (24bpp):
for
(uY = 0; uY < uHeight; uY++)
{ // Zeilenschleife
for (uX = 0; uX <
uWidth; uX++)
{ // Spaltenschleife
*lpDIBDest++
= (BYTE)((255.0 * pow((double)*lpDIBSrc / 255.0,
dftInvGamma)) + 0.5);
lpDIBSrc++;
*lpDIBDest++
= (BYTE)((255.0 * pow((double)*lpDIBSrc / 255.0,
dftInvGamma)) + 0.5);
lpDIBSrc++;
*lpDIBDest++
= (BYTE)((255.0 * pow((double)*lpDIBSrc / 255.0,
dftInvGamma)) + 0.5);
lpDIBSrc++;
}
// Ausrichtung auf
Doppelwortgrenze
}
...
// Bei indizierten
DIB's:
for (UINT uColor = 0; uColor <
uNumColors; uColor++)
{
lpBMIDest->bmiColors[uColor].rgbRed
=
(BYTE)((255.0 * pow((double)(lpBMIDest->bmiColors[uColor].rgbRed)
/ 255.0, dftInvGamma)) + 0.5);
lpBMIDest->bmiColors[uColor].rgbGreen
=
(BYTE)((255.0 * pow((double)(lpBMIDest->bmiColors[uColor].rgbGreen)
/ 255.0, dftInvGamma)) + 0.5);
lpBMIDest->bmiColors[uColor].rgbBlue
=
(BYTE)((255.0 * pow((double)(lpBMIDest->bmiColors[uColor].rgbBlue)
/ 255.0, dftInvGamma)) + 0.5);
}
...
}
[ gammadib.cpp ]
[ <<
Vorheriger ] [ Übersicht ]
[ Nächster
>> ]
|