Mal so ausm Kopf, und ohne versucht zu haben die Function oben zu verstehen - die Aufgabe ist nämlich recht trivial
Delphi-Quellcode:
function AverageColor(bmp: TBitmap): TColor;
var
ar, ag, ab, pixelCount: Int64;
x, y: Integer;
c: TColor;
begin
ar := 0;
ag := 0;
ab := 0;
for y := 0
to bmp.Height-1
do
begin
for x := 0
to bmp.Width-1
do
begin
c := bmp.Canvas.Pixels[x, y];
inc(ar, GetRValue(c));
inc(ag, GetGValue(c));
inc(ab, GetBValue(c));
end;
end;
pixelCount := bmp.Width*bmp.Height;
result :=
rgb(ar
div pixelCount, ag
div pixelCount, ab
div pixelCount);
end;
Natürlich etwas langsam dank Pixels[], aber ein Umbau nach Scanline ist denke ich jetzt machbar.
Happy Eierhunting!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)