Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib-将图像存储在变量中_Python_Html_Image_Matplotlib - Fatal编程技术网

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')
没有一个功能适合我的用例:

  • plt.savefig(sys.stdout,format='png')
    将其写入stdout。这确实有帮助。。因为我必须将图像嵌入到html文件中
  • 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