我已经使用PIL生成了一个图像。如何将其保存为内存中的字符串?Image.save()
方法需要一个文件。
我希望有几个这样的图像存储在字典中。
发布于 2009-03-14 17:21:04
您可以使用BytesIO
类来获取行为类似于文件的字符串的包装。BytesIO
对象提供与文件相同的接口,但只将内容保存在内存中:
import io
with io.BytesIO() as output:
image.save(output, format="GIF")
contents = output.getvalue()
您必须使用format
参数显式指定输出格式,否则在尝试自动检测它时,PIL将引发错误。
如果从文件加载图像,则该图像具有包含原始文件格式的format
参数,因此在这种情况下可以使用format=image.format
。
在引入io
模块之前的旧Python2版本中,您应该使用StringIO
模块。
发布于 2015-04-30 23:16:32
对于Python3,需要使用BytesIO:
from io import BytesIO
from PIL import Image, ImageDraw
image = Image.new("RGB", (300, 50))
draw = ImageDraw.Draw(image)
draw.text((0, 0), "This text is drawn on image")
byte_io = BytesIO()
image.save(byte_io, 'PNG')
阅读更多:http://fadeit.dk/blog/post/python3-flask-pil-in-memory-image
发布于 2009-03-14 17:39:26
save()
既可以接受类似文件的对象,也可以接受路径,因此您可以像StringIO
一样使用内存中的缓冲区
buf = StringIO.StringIO()
im.save(buf, format='JPEG')
jpeg = buf.getvalue()
https://stackoverflow.com/questions/646286
复制相似问题