Interessante Diskussion. Da kommt mir aber noch eine abstruse Idee: Man macht ein "Resize" des Bildes auf 1x1 Pixel großes Bild und schaut sich dann nur noch dieses Pixel an. Läuft das Resize auf der GPU wäre das auch ganz schon flott.
Ich habe natürlich keine Ahnung, wieviel Mühe sich so ein Bildverkleinerungsalgo macht, wenn das Ziel nur noch 1 Pixel groß ist...
Viele Grüße
Michael
Halt doch noch rasch dazu:
Coole Idee...
.
Funktioniert auch gut... und sicher schnell, u.v.a. auch auf dem TrillionK Monitor. Ich habe keine Zeit fürs Messen.
Die Werte sind (was ich auch erwartet habe, GrafikerInnen berechnen den Durchschnittswert wahrscheinlich eher über ein anderes Modell und etwas anders) nicht ganz gleich (wie beim
RGB DS Rechnen). Bei einfarbigen Bitmaps aber natürlich identisch.
Man könnte natürlich statt auf ein 1x1 Pixel zu skalieren eine etwas grössere Zielbitmap wählen.
Der Code wird ultrakurz:
GDI+
Delphi-Quellcode:
uses GDIPOBJ, GDIPAPI;
gr := TGPGraphics.Create( bmap );
gr.ScaleTransform( 1/bmap.GetWidth, 1/bmap.GetHeight );
gr.DrawImage( bmap, 0,0 );
bmap.GetPixel(0,0,col);