Как сохранить фигуру Pylab в файл в памяти, который можно прочитать в образе PIL? - PullRequest
42 голосов
/ 22 декабря 2011

новичок в 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")

есть идеи?Я не хочу, чтобы решение включало дополнительные пакеты, спасибо.

1 Ответ

72 голосов
/ 22 декабря 2011

Не забудьте позвонить 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()
...