通过套接字发送图像并显示

2024-04-26 10:39:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个图像从服务器发送到客户端,然后让客户端用show()显示它,但是我遇到了一些问题。 这是发送图像的服务器代码:

        im = ImageGrab.grab()
        if not os.path.exists(r'C:\screens'):
            os.makedirs(r'C:\screens')
        im.save(r'C:\screens\screen.jpg')
        data = open(r'C:\screens\screen.jpg', 'r')
        data = data.read()
        client_socket.send(str(data))

现在,显然我不能通过套接字发送文件,所以我将其作为字符串发送,但是,我不知道如何在客户端中使用show(),因为您不能在字符串上使用show(),我也不知道如何实现这一点。 正如你所看到的,我几乎是一个python初学者,所以如果解决方案简单明了,我很抱歉。 我很感激你的帮助,谢谢!


Tags: 字符串代码图像服务器客户端dataosshow
1条回答
网友
1楼 · 发布于 2024-04-26 10:39:28

你用的是Python 2还是3?(编辑:python 2.7,在标签中,对不起)无论如何:一个图像文件几乎总是不是文本,所以不要把它当作文本。

  • 这也意味着您必须将图像数据读取为二进制而不是文本模式,因此请使用data = open("image.jpg", "rb").read()
  • 在通过套接字发送之前,不要转换为str,而是直接发送二进制(字节)。
  • 在接收端(你的客户?)您可以从套接字中recv字节。我想您可以使用Image.frombytes直接从中创建一个图像并显示出来。或者,将从套接字获得的字节写入一个新文件(确保以“wb”二进制模式打开它)并Image.open()该文件。

相关问题 更多 >