将PIL Image对象转换为File对象

时间:2017-10-05 19:32:18

标签: python python-imaging-library

有没有办法(不将文件保存到磁盘然后删除它)将PIL Image对象转换为File对象?

2 个答案:

答案 0 :(得分:3)

让我们看看文件对象是什么。

with open('test.txt', 'r') as fp:
    print(fp)
    # <_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>

enter image description here也有更多关于这个主题的信息。

我怀疑出于您的目的,拥有一个BytesIO对象就足够了。

import io
from PIL import Image
im = Image.new("RGB", (100, 100))
b = io.BytesIO()
im.save(b, "JPEG")
b.seek(0)

但是,如果您确实想要相同的对象,则-

fp = io.TextIOWrapper(b)

答案 1 :(得分:0)

使用 tempfile 标准库中的临时文件。

from tempfile import TemporaryFile
from PIL import Image

fp = TemporaryFile()

img = Image.new("RGB", (100, 100))
img.save(fp, "PNG")

不要忘记重置位置!

fp.seek(0)

关闭文件将删除它

fp.close()

https://docs.python.org/3/library/tempfile.html