使用PIL时,如果我在字节缓冲区中有图像数据,我可以按照以下步骤创建一个Image对象......
# Assume `bytedata` is a byte buffer that came
# from reading an image file, or perhaps from a
# decoded image file attachment from an email.
im = Image.open(io.BytesIO(bytedata))
但是,如果我执行以下操作,imagebytes
总是与bytedata
不同。它通常比bytedata
...
imagebytes = im.tobytes()
有没有办法从我以前用来实例化它的Image对象中提取完全相同的数据?
我知道我可以使用save
方法将此数据写入临时文件,然后只读取该文件。但是,我想在内存中完成所有操作,没有任何文件IO。
当然,这是一个过于简化的例子。我通常不需要提取我刚才用于创建对象的相同数据。我正在寻找的是一种在我开始时提取相同的 格式 数据的方法,也许是在完成类似im.rotate(30)
之后的事情,所以然后,我可以将该数据传递给其他例程,这些例程通常操作直接从图像文件读取或从电子邮件附件解码的字节数据。
我无法让它工作,所以我只是做了以下简单的测试。 before
和after
字节数组总是显着不同:
im = Image.open(io.BytesIO(before))
after = im.tobytes()
有什么方法可以让我从Image对象中获取数据吗?
提前致谢。