AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Nur prüfen ob Bilder unterschiedlich sind
Thema durchsuchen
Ansicht
Themen-Optionen

Nur prüfen ob Bilder unterschiedlich sind

Ein Thema von meisteralex · begonnen am 21. Dez 2005 · letzter Beitrag vom 22. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#1

Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 11:46
Ist wahrschienlich bei meinem letzten Thread ein wenig Untergegangen
Ich denke da gibts bestimmt ne ganze einfache Lösung:
Also es geht darum zu prüfen ob 2 Bitmaps unterschiedlich sind.
Nich wo, nicht wie sondern einfach nur ob und dass sehr schnell (müsste so schnell sein wie bitblt).
Daher wollte ich fragen ob es sowas wie nen Binärvergleich von 2 Bitmaps gibt??
Also dasss man irgend wie einfach sagen kann if (bit1 = bit2) then ....
Wollte jetzt nicht mit scanline anfangen, da das zwar schnell ist, jedoch nicht an die Schnelligkeit von BitBlt rankommt, welche ich benötige!
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#2

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 11:50
sind die bitmaps auf der festplatte gespeichert oder nur im arbeitsspeicher?

wenn auf platte, könntest du ja via md5 oder crc32 prüfen ob die dateien unterschiedlich sind (ganz primitv -> FileSize).
Edit: Hagen hat dazu mal was verfasst.
  Mit Zitat antworten Zitat
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#3

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 12:05
ne sie liegen als tbitmap objekte im speicher
es muss doch irgendnen simplen befehl geben um 2 objekte im speicher zu vergleich, oder ?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 13:27
Delphi-Referenz durchsuchenCompareMem
Hol dir per Scanline jeweils den Pointer auf die Pixeldaten und vergleiche sie miteinander.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#5

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 13:50
mmm, gibt mir scanline nicht nur immer eine zeile zurück ??
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 13:54
Khabarakh meine eine For-Schleife in der du scanline anwendest.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#7

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 13:56
Du brauchst doch nur einen Zeiger auf die Bilddaten, und das gibt dir Scanline zurück. Dann kannst du ja mit CompareMem schauen, ob der Speicher an dieser Stelle identisch ist.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 14:02
Zitat von ichbins:
Khabarakh meine eine For-Schleife in der du scanline anwendest.
Eigentlich nicht .
Ich bin mir nicht sicher (schon lange nicht mehr damit gearbeitet, wozu gibt es GR32 ?), aber ein Pointer auf die letzte Zeile sollte der Anfang der Daten sein, also Scanline[n] + Width * SizeOf(TRGBQuad) = Scanline[n-1]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
meisteralex

Registriert seit: 22. Nov 2005
173 Beiträge
 
#9

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 21. Dez 2005, 15:02
kannst du mir mal beispielcode geben, wie ich das jetzt genau vergleich ?
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#10

Re: Nur prüfen ob Bilder unterschiedlich sind

  Alt 22. Dez 2005, 11:01
@meisteralex:
Du solltest auch überlegen, wenn du das Programm schreibst, wie wahrscheinlich es ist, dass deine zwei Bilder gleich sind.
Wenn es ziemlich unwahrscheinlich ist, dann würde ich wie schon vorgeschlagen mit ScanLine arbeiten und statt for-Schleifen while- oder repeat-Schleifen nehmen, damit du sofort bei einem Ungleichen Pixel aus der Funktion aussteigen kannst. Möglicherweise geht es bei for-Schleifen auch, aber ich würde dir diesen Ausstieg empfehlen einzubauen (für die Ausführungsgeschwindigkeit).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:18 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