Macht dieses PNG -Bytearray Sinn?/ Senden eines Bildes über UDP - Python, Qtcreator, io.Bytesio
Posted: 03 Mar 2025, 22:49
Code: Select all
QByteArray s1;
QImage Image;
... //
Ich habe eine Bilddatei über QTCreators QBuffer in einen Bytearray konvertiert, aber ich bin mir nicht sicher, ob es tatsächlich gültig ist oder nicht. Ich konnte keinen Ort finden, an dem ich leicht prüfen kann, ob er gültig ist oder nicht. < /P>
"\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01\x19\x00\x00\x01-\b\x06\x00\x00\x00
Mein ursprüngliches Ziel ist es, ein Bild von QTCreator über ein Datagramm an meinen Python -Server zu senden und es wieder in ein zu angezeigter Bild zu machen. IO.Bytesio scheint das Datagramm als solches nicht zu erkennen, aber selbst dann unterscheidet sich das, was es empfängt, leicht von der QTCreator -Konsolenausgabe. Für mich scheint es aus irgendeinem Grund ein Ereignis von x00 zu überspringen. < /P>
bytearray(b'\x89PNG\r\n\x1a\n\xac\xc4\x01\x95+\x0e\x1b\xed\xd8\xb1M\xecP\x14E\xd1\xf7\xbe(dh\x0f\xea\x19\xb7\x07\x9d\\\x92\x8f c\x92-c\xb4\x96d\xc9\xe1\x89\xb6\xae\xbdgf\x16@\xe4\xdf\xd9\x03\x80\xbfMd\x80\x94\xc8\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8)\x91\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x19 %2@Jd\x80\x94\xc8\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x90\x12\x19 %2@Jd\x80\x94\xc8R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x91\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8 %2@Jd\x80\x94\xc8\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x12\x19 %2@Jd\x80\x94\xc8"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\xf6\xfez\x8e\xb3\xf7p){f\xe6\xec\x11\\\xc9\xf3\xda\xcfok\xde\xce\xde\xc1U\xb8dx\xc0\xf1\xed\x92y_\xeb\xdd-\xc3\xe3D\x86\x1f\x1ck\xef\xd7u\x9fY3\xb3f\xeeg\x0f\xe2bD\x86\x07\xdc\xd7\xcb\xe7\xeb\xf1z\xe6\x10.\xe8\xe9\xec\x01\xfcv/kn{\xed\xfd?.\xb7\xdb\xa9k\xb8\x1e?~\x81\x94\xcf% %2@Jd\x80\x94\xc8\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x12\x19 %2@Jd\x80\x94\xc8"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8)\x91\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x19 %2@Jd\x80\x94\xc8\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x90\x12\x19 %2@Jd\x80\x94\xc8R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x91\x01R"\x03\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8 %2@Jd\x80\x94\xc8\xa4D\x06H\x89\x0c\x90\x12\x19 %2@Jd\x80\x94\xc8\x12\x19 \xf5\x01\xff%"\xd5\x12\x0b\xb7\x80B`\x82d\x80\x94\xc8\x06H\x89\x0c\x90\x12\x19 \xf5\x17Y!-\x17\x9b\xe1o\xe0')
< /code>
IO.Bytesio selbst wirft diesen Fehler und veranlasst mich so zu fragen, was schief geht. < /p>
PIL.UnidentifiedImageError: cannot identify image file
< /code>
Ich bin stumpf und nicht sicher, wie ich vorgehen soll.from socket import *
import sys
import time
import io
import PIL.Image as Image
import base64
serverPort = 80
fmsg = bytearray()
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print('Send Now')
while True:
message, clientAddress = serverSocket.recvfrom(1024)
if message == b"ENDTHIS":
print(fmsg)
img = Image.open(io.BytesIO(fmsg))
img.show()
else:
fmsg += bytearray(message)
print(message)