使用BytesIO的PIL:无法识别图像文件

问题描述 投票:2回答:1

我试图通过套接字连接发送图像进行视频聊天,但是从字节格式重建图像是不正确的。这是我将图像转换为要发送的字节:

pil_im = Image.fromarray(img)
b = io.BytesIO()
pil_im.save(b, 'jpeg')
im_bytes = b.getvalue()
return im_bytes

这很好,但是,我无法解决将这些字节重新格式化为图像文件的问题。这是我的代码重新格式化为图像显示:

pil_bytes = io.BytesIO(im_bytes)
pil_image = Image.open(pil_bytes)
cv_image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
return cv_image

第二行引发了以下异常:

无法在0x0388EF60>处识别图像文件<_io.BytesIO对象

我看了一些其他线程(this onethis one)但没有解决方案对我有帮助。我也使用this作为参考来尝试纠正自己,但似乎对他们来说好的方法对我来说并不适合。感谢您提供的任何帮助,请原谅任何错误,我还在学习python。

python image python-3.x bytesio
1个回答
0
投票

首先谢谢!因为你问题中的代码帮我解决了问题的第一部分。第二部分已经使用这个简单的代码解决了(不要转换为数组)

dataBytesIO = io.BytesIO(im_bytes)
image = Image.open(dataBytesIO)

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.