如何将接收到的图像从套接字保留在缓冲区中

时间:2018-08-08 14:53:46

标签: python sockets io

我正在研究通过套接字从远程计算机接收图像的项目。由于我不知道图像的大小,所以我正在逐块接收图像,并将其保存到io.BytesIO()

    def imgdisplayer():
        nonlocal conn, display
        with io.BytesIO() as f:
            while True:
                bytes = conn.recv(1024)
                if not bytes: break
                f.write(bytes)
            imgobj = pickle.loads(f)

但是我的代码无法正常工作,我猜我对io.BytesIO有误解 这里出现的错误是:

TypeError: a bytes-like object is required, not '_io.BytesIO'

有人可以帮助我解决问题或建议另一种方法进行操作吗?

1 个答案:

答案 0 :(得分:1)

BytesIO是一个类似文件的对象。如果需要其值,则应使用getvalue()方法:

imgobj = pickle.loads(f.getvalue())