Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Bitmap-Teil mit Positionsangaben über's Netz übertragen? (https://www.delphipraxis.net/169818-bitmap-teil-mit-positionsangaben-uebers-netz-uebertragen.html)

Davi 14. Aug 2012 11:45

Bitmap-Teil mit Positionsangaben über's Netz übertragen?
 
Guten Tag! :hi:

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?

Aphton 14. Aug 2012 12:04

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?
 
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..

Davi 14. Aug 2012 12:13

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

Zitat von Aphton (Beitrag 1178167)
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.

Aphton 14. Aug 2012 12:48

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?
 
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?

bernhard_LA 14. Aug 2012 12:49

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?
 
Bitmap via TCP verschicken - einfach mal die INDY 10 TCP DEMOS anschauen auf source forge .....

sx2008 14. Aug 2012 12:55

AW: Butmap-Teil mit Positionsangaben über's Netz übertragen?
 
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.

mkinzler 14. Aug 2012 13:24

AW: Bitmap-Teil mit Positionsangaben über's Netz übertragen?
 
Dann wäre eher PNG oder TIFF geeignet

Davi 14. Aug 2012 13:57

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

Zitat von Aphton (Beitrag 1178174)
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 :P

@sx2008

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

Davi 14. Aug 2012 15:45

AW: Bitmap-Teil mit Positionsangaben über's Netz übertragen?
 
Vielen Dank an alle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz