AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap Unterschiede mit FMX

Ein Thema von greenmile · begonnen am 18. Feb 2016 · letzter Beitrag vom 18. Feb 2016
Antwort Antwort
greenmile

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

Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 09:42
Hallo,

ich habe mir schon einige Funktionen zum Vergleichen 2er Bitmaps, Images angeschaut. Leider funktionieren die nicht unter Firemonkey. Gibt es für Firemonkey überhaupt etwas? Für mich wäre interessant, um wieviel Pixel/Prozent sich zwei Bilder unterscheiden. Zur Not auch, ob sie gleich sind. Hat da jemand etwas? Vielleicht kann FMX das auch von Haus aus, habe aber nix gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 09:49
Schau dir mal Delphi-Referenz durchsuchenTBitmapSurface an

Direktlink http://docwiki.embarcadero.com/Libra...TBitmapSurface
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
greenmile

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

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 09:56
Danke, aber irgendwie stehe ich noch auf dem Schlauch ...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 10:04
Danke, aber irgendwie stehe ich noch auf dem Schlauch ...
Du brauchst doch den Zugriff auf die einzelnen Pixel. Den gibt es über TBitmapSurface .
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
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
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 11:09
Darum:

Delphi-Quellcode:
Result := 0;
...
If (Surf1.Height<>Surf2.Height) or (Surf1.Width<>Surf2.Width) then Exit;
Hier Result am besten initial auf -1 o.ä. setzen.
  Mit Zitat antworten Zitat
greenmile

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

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 11:13
Nein er geht in die Funktion rein, sehe ich im Debugger. Aber die Unterscheide sind angeblich zu klein (If Surf1.Pixels[x, y]<>Surf2.Pixels[x,y] then Inc(DiffPixel)). Die 0 resultiert aus dem Dreisatz am Ende (gerundet)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 11:21
Es wäre vllt. besser wenn du statt einem Longword ein Double o.ä. zurückgeben würdest.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

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

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

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 11:45
Dann bleibt es aber bei 0. Irgendwas läuft bei "Surf1.Pixels[x, y]<>Surf2.Pixels[x,y]" schief. Dafür kenne ich mich aber leider zu wenig mit Bitmaps und co aus.
  Mit Zitat antworten Zitat
greenmile

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

AW: Bitmap Unterschiede mit FMX

  Alt 18. Feb 2016, 12:27
Nachtrag: Funktioniert doch, habe nur Screenshots von einem Video gemacht. Habe es mit anderen Bildern getestet und läuft. Suboptimal, aber läuft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz