Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bild als String übertragen? (https://www.delphipraxis.net/125811-bild-als-string-uebertragen.html)

LDericher 12. Dez 2008 10:37


Bild als String übertragen?
 
Hallo DP!

Ich stehe vor folgendem Problem:
Ich möchte eine Art Netzwerk-Fernsteuerung programmieren, also möchte Maus/Tastatur und so kontrollieren.
Funktioniert auch so weit. Gesendet wird über eine Ableitung der Klasse - heißt glaube ich TWinSocket.
Nun habe ich vor, mir Screenshots übertragen zu lassen, die ich im Bitmap-Format vorliegen habe. Ggf. kann ich die dann natürlich konvertieren, weiß auch wie.

Also: Ich kann Daten allerdings (bis jetzt?) nur als STRING senden und empfangen. Demnach: Ist es möglich - relativ schnell - ein Bild in einen "normalen" String umzuwandeln und umgekehrt, sodass ich meine Screenshots übertragen bekomme?

Gruß,
Euer LDer.

P.S.: Ich habe in dem Zusammenhang "MIME" gehört... Weiß aber noch nichts genaueres damit anzufangen.

turboPASCAL 12. Dez 2008 10:46

Re: Bild als String übertragen?
 
Du kannst das Bild, was ja wie du weisst aus Daten, also Bytes besteht in Chars oder besser in Hexadezimalwerte umwandels und somit als ein String übertragen.
ZB. mit Delphi-Referenz durchsuchenIntToHex().

Zitat:

Ist es möglich - relativ schnell - ein Bild in einen "normalen" String umzuwandeln und umgekehrt, sodass ich meine Screenshots übertragen bekomme?
Das kommt nun auf die Bildgrösse und die Rechnergeschw. sowie die Datenübertragungsgeschw. an.
Wenn ein Bild in einen String umgewandelt werden zB. wie oben beschrieben mit IntToHex entseht eine doppelte Datenmenge.

Besser ist es die oder das Bild direkt also ohne umwandlung in einen String zu Übertragen. Auch dies kann bei grossen Bildern eine Weile
Beanspruchen.

SirThornberry 12. Dez 2008 11:35

Re: Bild als String übertragen?
 
das wandeln kann man sich doch eigentilch sparen und direkt die Binärdatein senden (sind ja letzendlich auch nur chars)

LDericher 12. Dez 2008 12:48

Re: Bild als String übertragen?
 
Sorry wenn ich so blöd frage, aber wie komme ich an die Binärdaten? Les ich da irgendwie den Speicher mithilfe des Zeigers aus? Oder steh ich grad mal auf'm Sclauch?

Also es ist nicht auf der Festplatte gespeichert, nur im Arbeitsspeicher (als Zeigervariable vom Typ TBitmap)

Der LDer

SirThornberry 12. Dez 2008 13:13

Re: Bild als String übertragen?
 
In einem String stehen die Bytes eben so hintereinander wie in einem Array of Byte, Array of Integer etc. Es ist immer nur eine Frage wie man das was da im Speicher steht interpretiert. Wenn du einen String versendest wird ja auch nur Zeichen1 + zeichen2... versendet.

LDericher 12. Dez 2008 13:45

Re: Bild als String übertragen?
 
Bitte,

Meine Frage bezog sich auf das Bitmap!
Dass ich einen STRING als array of Char sehen kann, ist mir wohl bekannt ;)
Aber wie lese ich ein BITMAP binär aus?
Und sagt bitte setzt mir nicht solche Gurken vor wie String := String + Chr(Bitmap[Index])...

Der LDer

turboPASCAL 12. Dez 2008 13:55

Re: Bild als String übertragen?
 
Nochmal doof gefragt, Bitmap nach String oder andersrum ? :gruebel:

LDericher 12. Dez 2008 13:59

Re: Bild als String übertragen?
 
Erst so rum, dann anders rum.

Also wenn irgendwer ne vernünftige Idee hat, nen Bitmap - als Variable im Speicher - in einen regulären String umzuwandeln(/verschlüsseln/wie auch immer) - dann kann ich diese Methode ja auch "umkrempeln".

Mir geht es wie gesagt darum, einen Screenshot zu machen, den in ein TBitmap zu laden, in einen String umzuwandeln, zu versenden und wieder ein TBitmap draus zu basteln.

Hoffe ich werde jetzt verstanden.

Lg vom LDer.

Cyf 12. Dez 2008 14:03

Re: Bild als String übertragen?
 
Zitat:

Aber wie lese ich ein BITMAP binär aus?
Du liest die Bytes hintereiander in einen Buffer? (oder sendest direkt den vorhandenen)
Idealerweise nicht einzeln sondern mit einem Befehl, der dir möglichst den Zugriff auf den Speicherbereich gibt?
Am einfachsten wäre wohl ein SaveToStream, da du sicher auch noch die Formatdaten brauchst (Farbtiefe, etc.) und dann aus dem Stream senden.

[Edit]
Zitat:

in einen regulären String umzuwandeln
Das ist kein Unterschied, das eine sind (bei nicht Unicode) einzelne Bytes, das andere auch.
Beim string-Typ gibt es nur zusätzliche Angaben über Länge und Referenzzählung.

turboPASCAL 12. Dez 2008 14:18

Re: Bild als String übertragen?
 
Zitat:

SaveToStream
Verflix, zu lahm.

Ich würde auch einfach die Streamvariante nehmen sie wird ja selbst vom TBitmap unterstützt. ( <Image>.Picture.Bitmap.SaveToStream )


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Seite 1 von 4  1 23     Letzte »    

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