以下是我从未成功的第一次尝试:
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")
有什么想法吗?我不希望解决方案涉及额外的包。
StringIO
替换io.BytesIO
也是如此。你能提醒我为什么在这里选择使用前者吗?谢谢! - nye17io.BytesIO
代替cStringIO.StringIO
以实现向前兼容。在Python3中,cStringIO
、StringIO
模块已经被移除,它们的功能都在io
模块中实现。 - unutbufig.png
- 谢谢。 - Little Bobby Tablesplt.savefig(buf, format='png')
将数据写入内存中的BytesIO
对象,不会创建文件。通常使用savefig
的方式是调用plt.savefig('/path/to/anyfilenameyouwant.png')
,这样可以指定文件名。 - unutbuPIL
/pillow
库,而是使用im = plt.imread(buf)
。你也可以使用plt.imsave('/path/to/saved/file.png', im)
将im
数组保存到文件中。 - jmd_dk