HTML 中的 Cherrypy 图片
Cherrypy image in HTML
如何将图像从 Cherrypy
流式传输到 HTML 页面?
我可以自己获取图像,但我正在尝试将其放入我定义的 HTML 大纲中:
class HelloWorld(object):
@cherrypy.expose
def index(self):
cherrypy.response.headers['Content-Type'] = "image/png"
plt.plot([1,2,3,4])
img = StringIO.StringIO()
plt.savefig(img,format='png')
imagedata = img.getvalue()
return """<html>
<head></head>
<body>
<p>Yo!</p>
<img src=imagedata />
</body>
</html>
"""
cherrypy.quickstart(HelloWorld())
上面的代码没有输出任何东西——甚至 Yo!
语句也不输出。
我知道怎么做了。
你必须:
- 将图形保存到
StringIO
对象中
- 获取对象内容
getvalue()
- 使用
base64.b64encode()
将内容编码为 base64
将该 base64 字符串放入带有正确 data:
参数的 img
标签中,如下所示:
class HelloWorld(object):
@cherrypy.expose
def index(self):
plt.plot([1,2,3,4])
img = StringIO.StringIO()
plt.savefig(img,format='png') # step 1.
imagedata = img.getvalue() # step 2.
encoded = base64.b64encode(imagedata) # step 3.
page = """<html>
<head></head>
<body>
<img src="data:image/png;base64,{0}" />
</body>
</html>
"""
return page.format(encoded) # step 4.
cherrypy.quickstart(HelloWorld())
如何将图像从 Cherrypy
流式传输到 HTML 页面?
我可以自己获取图像,但我正在尝试将其放入我定义的 HTML 大纲中:
class HelloWorld(object):
@cherrypy.expose
def index(self):
cherrypy.response.headers['Content-Type'] = "image/png"
plt.plot([1,2,3,4])
img = StringIO.StringIO()
plt.savefig(img,format='png')
imagedata = img.getvalue()
return """<html>
<head></head>
<body>
<p>Yo!</p>
<img src=imagedata />
</body>
</html>
"""
cherrypy.quickstart(HelloWorld())
上面的代码没有输出任何东西——甚至 Yo!
语句也不输出。
我知道怎么做了。
你必须:
- 将图形保存到
StringIO
对象中 - 获取对象内容
getvalue()
- 使用
base64.b64encode()
将内容编码为 base64
将该 base64 字符串放入带有正确
data:
参数的img
标签中,如下所示:class HelloWorld(object): @cherrypy.expose def index(self): plt.plot([1,2,3,4]) img = StringIO.StringIO() plt.savefig(img,format='png') # step 1. imagedata = img.getvalue() # step 2. encoded = base64.b64encode(imagedata) # step 3. page = """<html> <head></head> <body> <img src="data:image/png;base64,{0}" /> </body> </html> """ return page.format(encoded) # step 4. cherrypy.quickstart(HelloWorld())