gpt4 book ai didi

python - 在 PIL 中打开 base64 字符串时出现奇怪的 IOError

转载 作者:太空狗 更新时间:2023-10-30 02:46:34 25 4
gpt4 key购买 nike

我尝试在 python shell 中对图像进行编码和解码。我第一次在 PIL 中打开解码的 base64 字符串时没有错误,如果我重复 Image.open() 命令我得到 IOError: cannot identify image file.

>>> with open("/home/home/Desktop/gatherify/1.jpg", "rb") as image_file:
... encoded_string = base64.b64encode(image_file.read())
>>> image_string = cStringIO.StringIO(base64.b64decode(encoded_string))
>>> img = Image.open(image_string)
>>> img
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=576x353 at 0xA21F20C>
>>> img.show() <-- Image opened without any errors.
>>> img = Image.open(image_string)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1980, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file

为什么会这样?

最佳答案

当您创建 image_string 时,您正在创建一个由字符串支持的伪造的类似文件的对象。当您调用 Image.open 时,它读取这个假文件,将文件指针移动到文件末尾。再次尝试在其上使用 Image.open 只会给您一个 EOF。

您需要重新创建 StringIO 对象,或者 seek() 到流的开头。

关于python - 在 PIL 中打开 base64 字符串时出现奇怪的 IOError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com