引发 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>