Python сохранить matplotlib рисунок на объекте изображения PIL
привет, возможно ли, что я создал изображение из matplotlib, и я сохраняю его на объекте изображения, который я создал из PIL? Звучит очень тяжело? Кто может мне помочь?
2 ответов
для отображения изображений Matplotlib на веб-странице в Django Framework:
создайте участок matplotlib
сохраните его как png-файл
сохраните это изображение в строковом буфере (используя PIL)
передать этот буфер в HttpResponse (set тип mime изображение/png)
возвращает ответ объект (отображаемый участок в этом случае).
другими словами, все эти шаги должны быть помещены в Django посмотреть функция, внутри views.py:
from matplotlib import pyplot as PLT
import numpy as NP
import StringIO
import PIL
from django.http import HttpResponse
def display_image(request) :
# next 5 lines just create a matplotlib plot
t = NP.arange(-1., 1., 100)
s = NP.sin(NP.pi*x)
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(t, s, 'b.')
buffer = StringIO.StringIO()
canvas = PLT.get_current_fig_manager().canvas
canvas.draw()
pil_image = PIL.Image.fromstring('RGB', canvas.get_width_height(),
canvas.tostring_rgb())
pil_image.save(buffer, 'PNG')
PLT.close()
# Django's HttpResponse reads the buffer and extracts the image
return HttpResponse(buffer.getvalue(), mimetype='image/png')
PIL.Image.fromstring устарел, и теперь вместо fromstring следует использовать frombytes. Следовательно, мы должны изменить строку:
pil_image = PIL.Image.fromstring('RGB', canvas.get_width_height(),
canvas.tostring_rgb())
to
pil_image = PIL.Image.frombytes('RGB', canvas.get_width_height(),
canvas.tostring_rgb())