AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Differenz zweier Bitmaps speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Differenz zweier Bitmaps speichern

Ein Thema von meisteralex · begonnen am 13. Dez 2005 · letzter Beitrag vom 28. Feb 2007
Antwort Antwort
Seite 3 von 3     123   
meisteralex

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

Re: Differenz zweier Bitmaps speichern

  Alt 21. Dez 2005, 21:43
welchen code meinst du denn jetzt genau ?? also bei mir brauch die scanline - methode 10x so viel wie die bitblt methode
  Mit Zitat antworten Zitat
Cicaro

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

Re: Differenz zweier Bitmaps speichern

  Alt 22. Dez 2005, 10:08
Zitat von meisteralex:
wie mach ich das denn nun ??

also ich bekomme mit

bitblt(dc2,0,0,W,H,dc1,0,0,mergepaint)

schon so zimich genau die differenz der beiden bilder hin
wie komme ich jedoch mit hilfe von dc1 und der differenz, welche nun in dc2 liegt, wieder zum ausgangsbild dc2 ???

also nochmal
ich hab dc1 (vor veränderung) und dc2 (nach veränderung)
mit bitblt(dc2,0,0,W,H,dc1,0,0,mergepaint) liegt nun in dc2 die eigentliche veränderung (reduziert auf die teile die sich auch wirklich verändert haben)
wie bekomme ich nun aus dc1 und dc2 wieder das ehemalige dc2, also das komplette bild und nicht nur die veränderungen??
wäre sehr nett wenn mir da jemand helfen könnte
Ich bin mir jetzt nicht sicher, wie du die Differenz zweier Bitmaps definiers. Was ich vorzuschlagen versuche, ist, dass man die beiden DCs der beiden Bitmaps so durch BitBlt verknüpft, dass man DIE Bits, die in den Pixeln an der gleichen Stelle gleich sind, durch NULL ersetzt. Das Ergebnis sollte dann in einem dritten Bitmap gespeichert werden.
Delphi-Quellcode:
// Beispiel (theoretisch):
// Vergleich von
Bitmap1.Canvas.Pixels[0,0] = 010101010101010101010101
Bitmap2.Canvas.Pixels[0,0] = 001100110011001100110011
// herauskommen sollte, wenn Bitmap1-Bitmap2:
Bitmap3.Canvas.Pixels[0,0] = 010001000100010001000100
// für Bitmap2-Bitmap1 sieht es dann etwas anders aus
Das sollte mit BitBlt gehen.

Vielleicht hilft das was, wenn du in der Unit 'Windows.pas' mal nach den Konstanten SRCPAINT und SRCCOPY suchst. Da stehen einige einleuchtende erläuterungen dabei.

Da die Differenz zweier Bitmaps ein scheinbar so großes Problem darstellt , werd' ich mich mal mit der Lösung etwas genauer befassen...
  Mit Zitat antworten Zitat
meisteralex

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

Re: Differenz zweier Bitmaps speichern

  Alt 22. Dez 2005, 16:03
jo hab jetzt den optimalen code gefunden *g*
nachdem ich hier die tips bekommen habe, hab ich einfach alle möglichkeiten mal durchgetestet.
der errechnet die differenz allein mit bitblt und rechne mit vorherigem bild + differenz das neue bild aus.
vielen dank nochmal für die hilfe, wenn den code jemand haben will dann postet hier.
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#24

Re: Differenz zweier Bitmaps speichern

  Alt 22. Dez 2005, 16:04
wie gross sind die differenzbilder ?
  Mit Zitat antworten Zitat
Cicaro

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

Re: Differenz zweier Bitmaps speichern

  Alt 23. Dez 2005, 09:41
Zitat von meisteralex:
wenn den code jemand haben will dann postet hier.
Da ich immer noch nicht wirklich weiß, was du unter Differenz zweier Bitmaps verstehst, würd ich mir mal den "fertigen" Code gern ansehen.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#26

Re: Differenz zweier Bitmaps speichern

  Alt 28. Feb 2007, 16:08
Sorry, wenn ich hier n totes Thema nochmal auferstehen lasse.

Aber könnte mir evtl jemand auf die sprünge helfen, wie die Jungs das hier schlussendlich realisiert haben? ich habe mit bitblt und Mergepaint rumexperimentiert aber bekomme hinterher nie die änderung so auf das alte Bild, dass daraus das neue Bild entsteht...

im Augenblick benutze ich

Delphi-Quellcode:
  BitBlt(ZielDC,0,0,1024,768,DC2,0,0,SRCcopy);
  bitblt(zielDC,0,0,1024,768,dc1,0,0,MERGEPAINT);
und zum zusammenfügen einfach den drawbefehl, kommt aber nur käse bei raus.


Ne Antwort von euch wäre echt klasse und sorry nochmal dass ich den alten thread nochmal neustarte.

Grüße
Alleinherrscher
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 23:34 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