引发 UnidentifiedImageError(PIL.UnidentifiedImageError: 无法识别图像文件 <_io.BytesIO 对象位于 0x0000018CA596D3

Posted

技术标签:

【中文标题】引发 UnidentifiedImageError(PIL.UnidentifiedImageError: 无法识别图像文件 <_io.BytesIO 对象位于 0x0000018CA596D350>【英文标题】:raise UnidentifiedImageError( PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x0000018CA596D350> 【发布时间】:2021-12-28 18:02:41 【问题描述】:

我收到错误“引发 UnidentifiedImageError( PIL.UnidentifiedImageError: cannot identify image file <_io.bytesio object at>' 在以下代码中:

import io
from PIL import Image 

file = io.BytesIO(str.encode('D:/Downloads/imagens/0b4d4db99a7b8ecba24909d277556de8.png'))

img1=Image.open(file)
img1.show()

还有很多其他类似的问题,但似乎都不是同一个问题。如果我去掉'str.encode',错误会变成“TypeError:需要一个类似字节的对象,而不是'str'”

【问题讨论】:

【参考方案1】:

您是要打开那个文件吗?

img1 = Image.open('D:/Downloads/imagens/0b4d4db99a7b8ecba24909d277556de8.png')

# or
with open('D:/Downloads/imagens/0b4d4db99a7b8ecba24909d277556de8.png', 'rb') as fh:
    img1 = Image.open(fh)

Docs供参考:

这是一个惰性操作;此函数识别文件,但文件保持打开状态,并且在您尝试处理数据(或调用 load() 方法)之前不会从文件中读取实际图像数据。见新()。请参阅 Pillow 中的文件处理。

参数

fp – 文件名(字符串)、pathlib.Path 对象或文件对象。文件对象必须实现file.read、file.seek和file.tell方法,并以二进制方式打开。

【讨论】:

如果我需要用 mysql 镜像做同样的事情,我怎样才能避免同样的错误? (您的解决方案有效) 一个 MySQL 镜像?像一个 BLOB?那将是您使用BytesIO 对象的时候。您将 blob 输入 bytesIO 并将其提供给 Image.open 这就是我不明白的,它不是一个BLOB,它是“类型:IMG”,并且给我的问题带来了同样的问题 我认为您需要更新您的问题,因为我不太清楚您的意思 没关系,请您帮忙

以上是关于引发 UnidentifiedImageError(PIL.UnidentifiedImageError: 无法识别图像文件 <_io.BytesIO 对象位于 0x0000018CA596D3的主要内容,如果未能解决你的问题,请参考以下文章

PIL.UnidentifiedImageError:无法识别图像文件 <_io.BytesIO 对象

UnidentifiedImageError: 无法识别图像文件 <_io.BytesIO object at 0x000002154C6AE400>

模型训练出现UnidentifiedImageError: cannot identify image file <io.BytesIO object at 0x7faaa82bdb90>

python删除文件夹里损坏的图片

引发异常或引发异常()

引发异常“这是错误”和引发“这是错误”之间的区别? [复制]