如何在Python 3中通过SocketServer发送图像?

如何在Python 3中通过SocketServer发送图像?,python,image,python-3.x,encode,socketserver,Python,Image,Python 3.x,Encode,Socketserver,我想用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.

我想用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)
但是对于Python3,它不再工作了。存在编码和编解码器问题,我不太理解encode()、decode()或str()的用法

你知道我如何实施它吗


谢谢

就像我在上面写的那样,您的代码按当前状态工作。要向要通过套接字发送的数据添加头,首先需要知道其编码。假设它是UTF-8,您可以执行以下操作:

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

在Python 3中,
字节
类型只能与
字节
连接。

真的吗。你有什么具体的错误?事实上,a很好地解释了我的问题。有一点我忘了添加:我有一个标题要添加到我的客户的图像中,我的标题是文本格式的。因此,当我发送数据时,我有如下内容:socketData.sendall(header+image_data),错误是:无法将“bytes”对象隐式转换为str。我需要将我的header转换为bytes(如果是,如何转换):/)还是将我的图像转换为文本?我可以单独发送,并且可以正常工作,因此解决了我的问题!非常感谢你!