Einzelnen Beitrag anzeigen

greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 10:58
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;

Geändert von greenmile (18. Feb 2016 um 11:08 Uhr)
  Mit Zitat antworten Zitat