Directory Contents Search << >>


DaVinci 4: Leonardo: Funktion DIBSelectColors

Die Funktion DIBSelectColors wählt die optimalen Farben für eine Farbpalette zur späteren Farbreduktion mit DitherTo8 aus:

HDIB API DIBSelectColors(

HDIB

hDIB,

int

DesiredColors);

hDIB

HDIB

Handle der DIB, für die eine optimale Farbpalette berechnet werden soll.

DesiredColors

int

gewünschte Anzahl der Farben 0..255, empfohlen 236.

Rückgabewerte

Der Rückgabewert gibt das Handle einer DIB mit 1 Pixel und 8 Bit Farbtiefe an, deren Farbpalette sich optimal zur Farbreduktion der DIB mit dem Handle hDIB eignet. Zur Durchführung der eigentlichen Farbreduktion kann die Funktion DitherTo8 benutzt werden, wobei der Parameter lpPal auf die DIB mit der optimierten Farbpalette verweist.

Anmerkungen

Die Funktion DitherTo8 benutzt zur Bestimmung einer optimalen Farbpalette einen einfachen Algorithmus, der die am häufigsten benutzen Farben als Farbpalette auswählt. Je nach vorliegendem Bildmaterial ist diese Auswahl nicht immer optimal.

DIBSelectColors benutzt dagegen zur Auswahl der optimalen Farbpalette den Median Cut Algorithmus, mit dessen Hilfe in der Regel eine bessere Bildqualität erreicht werden kann. DIBSelectColors benötigt zu einer Analyse wesentlich mehr Rechenzeit als die direkte Verwendung von DitherTo8.

Wenn der Einheitentreiber des Bildschirms nur 256 Farben zuläßt, kann systemweit nur eine Grafik mit optimaler Farbpalette angezeigt werden.

Beispiel

HDIB hDIBSelectPalette = DIBSelectColors(Data->hDIB, 236);

LPBITMAPINFOHEADER lpbmiSelectPalette;

if (hDIBSelectPalette)

{

lpbmiSelectPalette = (LPBITMAPINFOHEADER) GlobalLock(hDIBSelectPalette);

hNewDIB = DitherTo8((LPBITMAPINFOHEADER) GlobalLock(Data->hDIB), 0, 0, lpbmiSelectPalette);

GlobalUnlock(hDIBSelectPalette);

GlobalFree(hDIBSelectPalette);

}

-


Valid HTML 4.01!