0

Python 3のsocketserverで画像を送信したいのですが、エンコードに問題があります。バイト単位で送信する必要がありますか、それともテキストで送信する必要がありますか?また、「b」オプションを使用して画像を開き、特定の形式に変換する必要がありますか?

以前のバージョンのPythonでは、次のことができました。

image = open('my_image.jpg', 'rb')
image_data = image.read()
image.close()

socketData = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketData.connect((ADDRESS,PORT))

socketData.sendall(image_data)

しかし、Python 3では、それはもう機能しません。エンコーディングとコーデックの問題があり、encode()、decode()、str()の使用法をよく理解していません。

私がそれをどのように実装できるか、あなたは何か考えがありますか?

ありがとう

4

1 に答える 1

0

上で書いたように、あなたのコードは現状のままで動作します。ソケット経由で送信するデータにヘッダーを追加するには、まずそのエンコーディングを知る必要があります。UTF-8 であると仮定すると、次のことができます。

header = "Header!\n"
header_bytes = bytes(header, 'utf-8')
socketData.sendall(header_bytes + image_data)

bytesbytestype はPython 3 でのみ連結できます。

于 2013-01-10T13:47:56.227 に答える