【问题标题】:Cherrypy image in HTMLHTML 中的 Cherrypy 图像
【发布时间】:2016-02-20 21:03:47
【问题描述】:

如何将图像从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! 语句。

【问题讨论】:

    标签: python-2.7 cherrypy


    【解决方案1】:

    我想出了办法。

    你必须:

    1. 将图窗保存到StringIO 对象中
    2. getvalue()获取对象的内容
    3. 使用base64.b64encode()将内容编码为base64
    4. 将该 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())
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 2017-09-21
      • 2011-09-25
      • 1970-01-01
      • 2023-03-28
      • 2018-02-16
      • 1970-01-01
      相关资源
      最近更新 更多