Ich hab meinen Code jetzt nochmal optimiert, dieser ist jetzt auch bei Bildern die keine oder nur wenige Unterschiede haben schneller:
Delphi-Quellcode:
function CompareImages(Bitmap1, Bitmap2: TBitmap): LongWord;
var
xy: integer;
P1, P2: PRGBTriple;
begin
Result:=0;
Bitmap1.PixelFormat:=pf24bit;
Bitmap2.PixelFormat:=pf24bit;
P1:=Bitmap1.ScanLine[Bitmap1.Height-1];
P2:=Bitmap2.ScanLine[Bitmap2.Height-1];
if not CompareMem(P1, P2, Bitmap1.Width*Bitmap1.Height*3) then
for xy:=1 to Bitmap1.Height*Bitmap1.Width do begin
if (P1^.rgbtRed<>P2^.rgbtRed) or (PWord(P1)^<>PWord(P2)^) then
Inc(Result);
Inc(P1);
Inc(P2);
end;
end;
Gleiche Bilder vergleichen (500 durchläufe):
Flips Algo: 1,0 sek
mein Algo: 0,8 sek
zwei komplett unterschiedliche Bilder vergleichen (500 Durchläufe):
Flips Algo: 3,7 sek
mein Algo: 1,0 sek
Noch schneller dürfte es warscheinlich nur mit Assembler gehen ^^
EDIT: kleine Änderung am Code
mfg