Danke, damit bin ich erstmal weitergekommen. Ich bin in Sachen Bitmap/Grafik nicht zu Hause, daher sorry für den Pfusch. Folgende Funktion gibt bei mir immer 0 aus, obwohl sich die Bilder unterscheiden. Siehst Du da auf Anhieb einen Fehler? Hier und da lässt es sich sicher optimieren, bin aber gerade bei Firemonkey vorsichtig. Knallt gerne und dann ist ev. die ganze Anwendung abgestürzt.
Code:
Function CompareImages(Bitmap1, Bitmap2: TBitmap): LongWord;
var
x, y, DiffPixel, TotalPixel: Integer;
Surf1: TBitmapSurface;
Surf2: TBitmapSurface;
begin
Surf1 := TBitmapSurface.Create;
Surf1.Assign(Bitmap1);
Surf2 := TBitmapSurface.Create;
Surf2.Assign(Bitmap2);
Result := 0;
DiffPixel := 0;
TotalPixel := 0;
If (Surf1.Height<>Surf2.Height) or (Surf1.Width<>Surf2.Width) then Exit;
for x := 0 to Surf1.Width-1 do begin
for y := 0 to Surf1.Height-1 do begin
If Surf1.Pixels[x, y]<>Surf2.Pixels[x,y] then Inc(DiffPixel);
Inc(TotalPixel);
end;
end;
// Percent
Result := (DiffPixel*100) div TotalPixel;
end;