我在用PIL的枕叉不断地收到错误
OSError: cannot identify image file <_io.BytesIO object at 0x103a47468>
当试图打开图像时。我将virtualenv与python 3.4一起使用,不安装PIL。
我试图在别人遇到同样问题的基础上找到解决办法,但是这些办法对我不起作用。这是我的代码:
from PIL import Image
import io
# This portion is part of my test code
byteImg = Image.open("some/location/to/a/file/in/my/directories.png").tobytes()
# Non test code
dataBytesIO = io.BytesIO(byteImg)
Image.open(dataBytesIO) # <- Error here
图像存在于文件的初始打开处,并将其转换为字节。这似乎对几乎所有人都有效,但我不明白为什么它对我失败了。
编辑:
dataBytesIO.seek(0)
不起解决方案的作用(尝试过),因为我不是通过流保存图像,我只是用数据实例化BytesIO,因此(如果我认为正确的话)seek应该已经是0。
(这一解决办法来自作者本人。我刚把它搬到这里。)
解决方案:
问题在于
Image.tobytes()
返回byte对象的方式。它似乎是无效数据,“编码”不能是原始数据以外的任何内容,因为几乎每个字节都是以\xff\
格式出现的,而原始数据似乎仍然输出错误数据。但是,通过BytesIO保存字节,并使用.read()
函数读取整个图像,得到了正确的字节,以后需要时可以实际使用。读取Dicom文件时,问题可能是由于Dicom压缩造成的。 确保gdcm和pydicom都已安装。
GDCM通常是更难安装的。最新的安装方法是
在某些情况下,处理原始图像文件(如CR2)时也会发生相同的错误。示例:http://www.rawsamples.ch/raws/canon/g10/RAW_CANON_G10.CR2
当你试图跑步时:
您将得到以下错误:
因此,首先需要使用rawkit转换图像,下面是一个如何进行转换的示例:
GitHub上mateusz michalik的代码信用(https://github.com/mateusz-michalik/cr2-to-jpg/blob/master/cr2-to-jpg.py)
相关问题 更多 >
编程相关推荐