Python matplotlib-将图像存储在变量中
我想将Python matplotlib-将图像存储在变量中,python,html,image,matplotlib,Python,Html,Image,Matplotlib,我想将matplotlib生成的图像存储在变量raw_data中,以将其用作内联图像 import os import sys os.environ['MPLCONFIGDIR'] = '/tmp/' import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt print "Content-type: image/png\n" plt.plot(range(10, 20)) raw_data = plt.sh
matplotlib
生成的图像存储在变量raw_data
中,以将其用作内联图像
import os
import sys
os.environ['MPLCONFIGDIR'] = '/tmp/'
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
print "Content-type: image/png\n"
plt.plot(range(10, 20))
raw_data = plt.show()
if raw_data:
uri = 'data:image/png;base64,' + urllib.quote(base64.b64encode(raw_data))
print '<img src = "%s"/>' % uri
else:
print "No data"
#plt.savefig(sys.stdout, format='png')
导入操作系统
导入系统
os.environ['MPLCONFIGDIR']='/tmp/'
导入matplotlib
matplotlib.use(“Agg”)
将matplotlib.pyplot作为plt导入
打印“内容类型:图像/png\n”
plt.绘图(范围(10,20))
原始数据=plt.show()
如果是原始数据:
uri='数据:图像/png;base64,'+urllib.quote(base64.b64encode(原始数据))
打印“”%uri
其他:
打印“无数据”
#plt.savefig(sys.stdout,format='png')
没有一个功能适合我的用例:
将其写入stdout。这确实有帮助。。因为我必须将图像嵌入到html文件中plt.savefig(sys.stdout,format='png')
/plt.show()
从命令行执行时不执行任何操作plt.draw()
cStringIO
或同等产品
import os
import sys
import matplotlib
import matplotlib.pyplot as plt
import StringIO
import urllib, base64
plt.plot(range(10, 20))
fig = plt.gcf()
imgdata = StringIO.StringIO()
fig.savefig(imgdata, format='png')
imgdata.seek(0) # rewind the data
print "Content-type: image/png\n"
uri = 'data:image/png;base64,' + urllib.quote(base64.b64encode(imgdata.buf))
print '<img src = "%s"/>' % uri
导入操作系统
导入系统
导入matplotlib
将matplotlib.pyplot作为plt导入
导入StringIO
导入urllib,base64
plt.绘图(范围(10,20))
图=plt.gcf()
imgdata=StringIO.StringIO()
图.savefig(imgdata,format='png')
imgdata.seek(0)#倒带数据
打印“内容类型:图像/png\n”
uri='数据:图像/png;base64,'+urllib.quote(base64.b64encode(imgdata.buf))
打印“”%uri
完整的python 3版本,将
导入matplotlib.pyplot作为plt
输入io
导入urllib,base64
plt.绘图(范围(10))
图=plt.gcf()
buf=io.BytesIO()
图savefig(buf,format='png')
buf.seek(0)
string=base64.b64编码(buf.read())
uri='数据:图像/png;base64,“+urllib.parse.quote(字符串)
html=''%uri
谢谢。。这有助于。。。我希望有一种直接获取图像的方法,而不是使用文件句柄。@Ramya:StringIO不使用文件句柄。它都在内存中存储,并且对StringIO实例的数量没有操作系统限制:在解码之前不要忘记解压缩字符串,因为url编码导致了一些“不正确的填充”错误。仅供参考,在Python 3中,您需要使用io.BytesIO,例如:buf=io.BytesIO();plt.gcf().savefig(buf,format='png');buf.seek(0);返回base64.b64encode(buf.read())
我有一个2d矩阵,而不是一个绘图。如何将其作为JPG图像数据作为变量返回?我希望imsave
有一个“return”选项。嗨,有没有办法绕过很长的URL?
import matplotlib.pyplot as plt
import io
import urllib, base64
plt.plot(range(10))
fig = plt.gcf()
buf = io.BytesIO()
fig.savefig(buf, format='png')
buf.seek(0)
string = base64.b64encode(buf.read())
uri = 'data:image/png;base64,' + urllib.parse.quote(string)
html = '<img src = "%s"/>' % uri