AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Remote Screenshots, aber nur die geänderten Teile
Thema durchsuchen
Ansicht
Themen-Optionen

Remote Screenshots, aber nur die geänderten Teile

Ein Thema von Zacherl · begonnen am 3. Dez 2006 · letzter Beitrag vom 4. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 14:32
Hi,

wie kann ich ein Remote Screenshot Programm realisieren, was aber nur jeweils die Änderungen neu überträgt? Geht das mit dem PNG Format? Weil ich habe da mal was gelesen, dass das möglich wäre.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 15:47
Screenshot machen -> übertragen -> Neuen screenshot -> Differenzbild -> alles was gleichgeblieben ist, ist jetzt schwarz -> mit PNG komprimieren: große gleichfarbige flächen werden sehr klein -> übertragen -> wieder zusammenrechnen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 16:11
Cool, danke ... hast du evtl einen Beispielcode fürs Erstellen von Differenzbildern und das Zusammenrechnen?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 17:16
Für's Differenzbild einfach nur die Pixel paarweise subtrahieren (RGBA getrennt behandeln). Das Ergebnis dann in ein neues Bild schreiben. Bild muss hier nicht unbedingt ein Bild in diesem Sinne sein, sondern einfach ein array von byte triplets (oder quadrupels) wenn du mit alpha-Kanal arbeitest, da du durch die Subtraktion auch negative Werte erhalten kannst, die ja in einem Bild eher nicht vorkommen.
-Jan-
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 19:40
Ja äh...

ich hätts - in meiner grandiosen booleschen unbedarftheit - halt so gemacht:

Delphi-Quellcode:
var
  Old, New, Result: TBitmap;
  Alpha: Array of Boolean;
  PtrOld, PrtNew: Pointer;
  x,y: Integer;
begin
  for y := 0 to Old.Height-1 do
  begin
    ptrOld := Old.Scanline[y];
    ptrNew := New.Scanline[y];
    for x := 0 to Old.Width-1 do
    begin
      if TColor(PtrOld^) = TColor(PtrNew^) then
      begin
        Alpha[x,y] := 0;
        Result.Pixels[x,y] := clBlack; //war zu faul da noch mal rumscanzulinen.... sollte man aber! Bringt einiges an Performance!
      end
      else
      begin
        Alpha[x,y] := 1;
        Result.Pixels[x,y] := TColor(PtrNew^);
      end;
      
      Inc(PtrOld);
      Inc(PtrNew);
    end;
  end;
end;
du kannst dann aus der Alphamaske und den Farbwerten ein PNG-Bild machen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 20:41
Vielen Dank ... aber man könnte es theoretisch auch so machen, oder?

Delphi-Quellcode:
Image2.picture.bitmap.Canvas.CopyMode := SRCINVERT;
with Image2.picture.bitmap.canvas do
  CopyRect(ClipRect,Image1.picture.bitmap.Canvas,Image1.picture.bitmap.Canvas.ClipRect);
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 20:42
Vom Prinzip her ähnlich, ABER: so wie ich das mitbekommen habe geht es um Remote-Übertragung des Bildschirminhaltes. Das bedeutet, dass Komprimierung hier eine Rolle spielen wird.
Komprimierung ist dann besonders effizient, wenn es viel Redundanz im den zu komprimierenden Informationne gibt. Wenn ich jetzt also einfach mal annehme, dass mein Bild heller geworden ist, aber sonst nicht viel passiert ist, dann bedeutet das, dass ich in der Differenz der beiden Bilder einen konstanten Wert erhalten werde. Dieser Wert lässt sich dann sehr effizient komprimieren. Wenn ich allerdings in mein Differenzbild einfach jeden veränderten Pixel reinschreibe, dann kann ich da große Wertespannen haben, die bei der Komprimierung stark ins Gewicht fallen.
Daher würde ich mal sagen, dass das Ganze mit dem einfachen Trick der Subtraktion effizienzsteigernd bei der Datenmenge wirkt.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 21:12
Ich würde es einfach mit einem xor für alle Pixel lösen, da sich zum einen selten der gesamte Bildschirm ändert und zum anderen das relativ schnell ist (im vergleich zu Luke's Lösung mit den richigen Farbwerten)

Man kann dann einfach (geht vll. sogar mit bitblt) das "xor-bild" machen - alle gleeichgebliebenen Regionen werden schwarz - und das dann entsprechend komprimieren.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 3. Dez 2006, 23:01
Okey, dann danke euch allen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Remote Screenshots, aber nur die geänderten Teile

  Alt 4. Dez 2006, 05:23
Du koenntest auch den gesamten Bildschirm in ein Raster stecken. Vlt. 8x8 oder 16x16 oder 32x32 z. B. Dann hast du ja nur noch gewisse "Felder" die du abgleichen und verschicken musst!

Vlt. hilft das auch!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  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 12:29 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