@KodeZwerg:
In #16 wurde in den Raum geworfen, ob man nicht einfach ein Resize auf 1x1 Pixel machen kann.
Ich hab das mal geprüft und in meiner Funktion TestGetAvgColor; vor dem Bmp.Free folgendes eingefügt:
Delphi-Quellcode:
T3:=GetTickCount;
Bmp2:=TBitmap.Create;
Bmp2.PixelFormat:=pf24Bit;
Bmp2.SetSize(1,1);
SetRect(R,0,0,1,1);
Bmp2.Canvas.StretchDraw(R,Bmp);
CL3:=Bmp2.Canvas.Pixels[0,0];
Bmp2.Free;
T3:=GetTickCount-T3;
Das ShowMessage am Ende hab ich abgeändert in:
ShowMessage('$'+IntToHex(CL1,8)+' '+IntToStr(T1-T0)+#13+
'$'+IntToHex(CL2,8)+' '+IntToStr(T2-T1)+#13+
'$'+IntToHex(CL3,8)+' '+IntToStr(T3));
Scheint zu funktionieren, was aber auch daran liegen könnte, dass in der Testprozedur alle Pixel die gleiche Farbe haben.
Korrektur: Hab es gerade mit einem echten Bild geprüft.
Die Methode, das Bild auf 1x1 Pixel zu reduzieren, liefert eine andere Durchschnittsfarbe.