Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Differenz zweier Bitmaps speichern (https://www.delphipraxis.net/58849-differenz-zweier-bitmaps-speichern.html)

meisteralex 21. Dez 2005 20:43

Re: Differenz zweier Bitmaps speichern
 
welchen code meinst du denn jetzt genau ?? also bei mir brauch die scanline - methode 10x so viel wie die bitblt methode

Cicaro 22. Dez 2005 09:08

Re: Differenz zweier Bitmaps speichern
 
Zitat:

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 :gruebel: , werd' ich mich mal mit der Lösung etwas genauer befassen...

meisteralex 22. Dez 2005 15:03

Re: Differenz zweier Bitmaps speichern
 
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.

etom291272 22. Dez 2005 15:04

Re: Differenz zweier Bitmaps speichern
 
wie gross sind die differenzbilder ?

Cicaro 23. Dez 2005 08:41

Re: Differenz zweier Bitmaps speichern
 
Zitat:

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.

alleinherrscher 28. Feb 2007 15:08

Re: Differenz zweier Bitmaps speichern
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 3 von 3     123   

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