我正在尝试使用Image.open
和Image.verify()
验证一个bytearray,而不是先将其写入磁盘,然后再用im = Image.open()
打开它。我查看了.readfrombuffer()
和.readfromstring()
方法,但是我需要图像的大小(只有在将字节流转换为图像时才能获得)。
我的读取函数如下所示:
def readimage(path):
bytes = bytearray()
count = os.stat(path).st_size / 2
with open(path, "rb") as f:
print "file opened"
bytes = array('h')
bytes.fromfile(f, count)
return bytes
然后作为一个基本测试,我尝试将bytearray转换为图像:
bytes = readimage(path+extension)
im = Image.open(StringIO(bytes))
im.save(savepath)
如果有人知道我做错了什么或者有更优雅的方法将这些字节转换为图像,那真的会很有帮助。
P.S.:我认为我需要bytearray是因为我对字节进行操作(扭曲它们的图像)。这确实起作用了,但我想在不将其写入磁盘并从磁盘再次打开图像文件来检查它是否损坏的情况下完成它。
编辑:它只给我一个IOError: cannot identify image file