AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Bitmap-Teil mit Positionsangaben über's Netz übertragen?
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap-Teil mit Positionsangaben über's Netz übertragen?

Ein Thema von Davi · begonnen am 14. Aug 2012 · letzter Beitrag vom 14. Aug 2012
Antwort Antwort
Davi

Registriert seit: 16. Jul 2012
8 Beiträge
 
#1

Bitmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 11:45
Guten Tag!

Ich schneide von einem TBitmap ein Rechteck ab und möchte dieses Stück über's Netz transportieren. An der anderen Seite muss das Stuck an die richtige Stelle wieder gezeichnet werden, es muss also auch die Positiuon mitgesendet werden. Wie mache ich das am Besten?

Ich habe an ein TMemoryStream gedacht. Ich schreibe zuerst die Position in das Stream rein und dann die TBitmap-Daten. Ist das das richtige Vorgehen in meinem Fall? Ich bin ein Programmieranfänger, bin aslo auf Ihr fortgeschrittenes Wissen angewiesen. Wie würder Ihr so etwas machen?

Geändert von Davi (14. Aug 2012 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 12:04
Ich vermute, dass diese "Stücke" eine konstante Dimension haben.
So betrachtet, kannst du sie indizieren, dh. du schickst immer ne Nummer mit, Anhand der der Empfänger sie richtig positionieren kann.
~
Code:
+-+-+
|1|2|
+-+-+
|3|4|
+-+-+
Zuerst muss du dem Empfänger mitteilen, was für eine Dimension das ganze Bild hat und in wie viele Stücke es horizontal und vertikal unterteilt ist.

Weiters würde ich diese Stücke per JPEG komprimieren..
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Davi

Registriert seit: 16. Jul 2012
8 Beiträge
 
#3

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 12:13
Ich vermute, dass diese "Stücke" eine konstante Dimension haben.
So betrachtet, kannst du sie indizieren, dh. du schickst immer ne Nummer mit, Anhand der der Empfänger sie richtig positionieren kann.
Das ist eben nicht der Fall. Die Stücke sind unterschiedlich groß. Es handelt sich dabei um Veränderungen einer neuen Bildes im Vergleich mit dem alten vom linkesten oberen bis zum rechtesten unteren veränderten Pixel. Die Position von diesem linkesten oberen Pixel ist auch die Position, die ich mitüberteagen muss.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 12:48
Hmm. dh du willst eig. nur (Pixel-) Veränderungen übertragen?
Einfach gehts, indem du die Dimension mitschickst (X, Y, Breite, Höhe) und im Anschluss der Datenstrom mit dem Bild.

Kompakter gehts - glaube ich - folgendermaßen:
Radiere alle gleichen Pixel im Bildausschnitt weg. Dadurch sorgst du dafür, dass die Entropie sinkt, weil dann sehr viele Zwischenräume entstehen (Nullen).
Wenn du nun irgendeine (verlustfreie) Kompression anwendest, dürften die Daten richtig stark schrumpfen.

Edit: Gehts dir um die Theorie oder um die Implementierung?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (14. Aug 2012 um 12:55 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 12:49
Bitmap via TCP verschicken - einfach mal die INDY 10 TCP DEMOS anschauen auf source forge .....
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 12:55
Die zu übertragende Datenstruktur kann z.B. so aussehen
Delphi-Quellcode:
TTransferBitmap = record
  TotalLength : Integer; // Länge inklusive des Bitmaps
  Xpos, Ypos : Integer; // linke obere Ecke des Bitmap
  // Hier folgen die Nutzdaten des Bitmaps die man mit Bitmap.SateToStream() erhalten kann
  // Breite und Höhe sind im Bitmap selbst enthalten
end;
Auf der Empfängerseite musst du so lange Daten sammeln, bis die übertragene TotalLength erreicht ist.

Code:
Weiters würde ich diese Stücke per JPEG komprimieren..
Aber nur dann falls es sich um ein Foto aus der realen Welt handelt.
Für Screenshots ist die verlustbehaftete JPEG-Komprimierung nicht geeignet weil dadurch
scharfe Kanten und Fonts an Schärfe verlieren.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Bitmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 13:24
Dann wäre eher PNG oder TIFF geeignet
Markus Kinzler
  Mit Zitat antworten Zitat
Davi

Registriert seit: 16. Jul 2012
8 Beiträge
 
#8

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 13:57
Gehts dir um die Theorie oder um die Implementierung?
Erst mal geht's mir um Theorie. Dann fange ich mit der Implemientierung an und springe diesen Forum mit meinem Anfängerfragen in die Luft

@sx2008

Da fängt's schon an. Wie verschicke ist ein Record?
[EDII] schon gefunden, sorry
  Mit Zitat antworten Zitat
Davi

Registriert seit: 16. Jul 2012
8 Beiträge
 
#9

AW: Bitmap-Teil mit Positionsangaben über's Netz übertragen?

  Alt 14. Aug 2012, 15:45
Vielen Dank an alle!
  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 07:51 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