2024-03-29 01:28:56 发布
网友
我已经用PIL生成了一个图像。如何将其保存到内存中的字符串中? Image.save()方法需要一个文件。
Image.save()
我想在字典里存几张这样的图片。
某事物的解决办法对我不起作用 因为在。。。
Imaging/PIL/Image.pyc line 1423 -> raise KeyError(ext) # unknown extension
它试图从文件名中的扩展名检测格式,而在StringIO中不存在该扩展名
通过在参数中自己设置格式,可以绕过格式检测
import StringIO output = StringIO.StringIO() format = 'PNG' # or 'JPEG' or whatever you want image.save(output, format) contents = output.getvalue() output.close()
对于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
您可以使用^{}类来获取字符串的包装器,这些字符串的行为类似于文件。BytesIO对象提供与文件相同的接口,但将内容保存在内存中:
BytesIO
import io with io.BytesIO() as output: image.save(output, format="GIF") contents = output.getvalue()
必须使用format参数显式指定输出格式,否则PIL将在尝试自动检测时引发错误。
format
如果从文件加载图像,它有一个包含原始文件格式的^{}参数,因此在本例中可以使用format=image.format。
format=image.format
在引入io模块之前的旧Python 2版本中,您应该使用^{}模块。
io
某事物的解决办法对我不起作用 因为在。。。
它试图从文件名中的扩展名检测格式,而在StringIO中不存在该扩展名
通过在参数中自己设置格式,可以绕过格式检测
对于Python3,需要使用BytesIO:
阅读更多:http://fadeit.dk/blog/post/python3-flask-pil-in-memory-image
您可以使用^{} 类来获取字符串的包装器,这些字符串的行为类似于文件。
BytesIO
对象提供与文件相同的接口,但将内容保存在内存中:必须使用
format
参数显式指定输出格式,否则PIL将在尝试自动检测时引发错误。如果从文件加载图像,它有一个包含原始文件格式的^{} 参数,因此在本例中可以使用
format=image.format
。在引入} 模块。
io
模块之前的旧Python 2版本中,您应该使用^{相关问题 更多 >
编程相关推荐