当前位置: 首页 > 面试题库 >

如何将pylab图形保存到可读取到PIL映像的内存文件中?

欧阳鸿德
2023-03-14
问题内容

是PIL的新功能,但希望从中获得快速解决方案。以下是我无法使用的第一枪:

import cStringIO
import pylab
from PIL import Image
pylab.figure()
pylab.plot([1,2])
pylab.title("test")
buffer = cStringIO.StringIO()
pylab.savefig(buffer, format='png')
im = Image.open(buffer.read())
buffer.close()

错误说,

Traceback (most recent call last):
  File "try.py", line 10, in <module>
    im = Image.open(buffer.read())
  File "/awesomepath/python2.7/site-packages/PIL/Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")

有任何想法吗?我不希望解决方案包含额外的程序包,谢谢。


问题答案:

请记住打电话,buf.seek(0)所以Image.open(buf)从:的开头开始阅读buf

import io
from PIL import Image
import matplotlib.pyplot as plt

plt.figure()
plt.plot([1, 2])
plt.title("test")
buf = io.BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
im = Image.open(buf)
im.show()
buf.close()


 类似资料:
  • 问题内容: 我有以下代码 而且有效。但是首先将文件下载到当前目录的问题。是否可以直接在RAM中读取文件并将其解码为图像? 问题答案: 我建议使用io模块直接将文件读取到内存中,而根本不必使用临时文件。 例如: 如果您的数据是二进制的,也可以使用。

  • 问题内容: 我刚刚使用Python图像库(PIL)进行了一些图像处理,这是我之前发现的用于执行图像的傅立叶变换的文章,但是我无法使用save函数。整个代码运行良好,但不会保存生成的图像: 我得到的错误如下: 如何使用Pythons PIL保存图像? 问题答案: 已解决有关文件扩展名的错误,您可以使用(不带点)或将输出名称与扩展名一起传递。现在要处理该错误,您需要在频域中适当地修改数据以将其保存为整

  • 更新: 我得到以下错误: ...newimg1.save(“img1.png”)文件“C:\python27\lib\site-packages\pil\image.py”,第1439行,在save save_handler(self,fp,filename)文件“C:\python27\lib\site-packages\pil\pngimageplugin.py”中,第572行,在_save

  • 问题内容: 我正在尝试使用命令在远程计算机上生成图形。但是我得到了这样的错误: 如何正确保存数字? 问题答案: 默认情况下,matplotlib将使用类似后端的内容。这要求X服务器正在运行。 尽管您只能使用X转发,但是随着matplotlib尝试与远程X服务器连接时,会有明显的延迟。如果您不需要与图进行交互,通常最好完全避免X连接,从而加快处理速度。 如果要完全不需要X服务器来进行绘图,请改用 后

  • 我知道这是一个奇怪的问题,但我真的需要这个工作。我有一个非常小的映像,我需要将它导入(“type it”)到java源文件中,而不需要从文件系统读取。(至少不是在程序运行的时候,我可以用其他虚拟应用程序读取系统上的图像来解析是二进制的或者我不知道还有什么)。 换句话说,我真的需要代表图像的代码行,我只会把它放在那里一次(我不需要动态地导入,我只需要键入它并将它永远留在那里)。 图像需要存储为并且,

  • 问题内容: 我正在使用python和图像模块(PIL)处理图像。 我想将图像对象的原始位流存储到redis,以便其他人可以使用nginx和httpredis直接从redis读取图像。 因此,我的问题是如何获取Image对象的原始位并将其存储到Redis中。 问题答案: 使用PIL 1.1.7,redis-2.7.2 pip模块和redis-2.4.10,我可以使它工作: 我发现这是不可靠的,因此此