当前位置: 首页 > 知识库问答 >
问题:

我试图将图像从python传递到html,但打开图像时遇到困难

宿建本
2023-03-14

此方法接收所需的图形类型、要工作的文件和要绘制的轴

@app.route('/graficar',methods=['POST'])
def graficar():
    if request.method == 'POST':
         
        tipo=request.form['tipo']
        nombre=request.form['nombre']
        sep=request.form['sep']
        columnaX=request.form['columnaX']        
        columnaY=request.form['columnaY']
        ruta=request.form['fil']
        df =pd.read_csv(ruta, sep=sep )
        df=df.head(10)
        print(df.head(5))
        if tipo=='1':
            print('Lineal')
            plt.plot(df[columnaX],df[columnaY])
            plt.xticks(df[columnaX], rotation=75)
            plt.xlabel(columnaX)
            plt.ylabel(columnaY)
            plt.title(nombre)
            plt.show()
            plt.savefig('img/Grafica.png' )
            return render_template("Grafica.html")

<div class="col-12">
      <h3 class="text-center display-2">Gráfica</h3>
      <div class="container ">
           <img class="img-fluid" src="img/Grafica.png" alt="Chania" />
      </div>
 </div>


  

共有1个答案

罗和煦
2023-03-14

我的建议是不要将文件保存在某处,而是动态创建图像。创建为渲染图像提供服务的endpoint,以及渲染页面模板的endpoint。分离这些将使一切更快、更容易调试和更可读。

看看这个答案,了解如何从烧瓶endpoint返回图像。Python:如何在flask中显示matplotlib

作为其工作原理的快速示例:

main.py

import io
import random

from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from flask import Flask, Response, render_template, request

# Create the app
app = Flask(__name__)


def create_figure(title: str = "", **kwargs) -> Figure:

    # Create a plot here...
    figure = Figure()
    axis = figure.add_subplot(title=title)
    xs = range(100)
    ys = [random.randint(1, 50) for _ in xs]
    axis.plot(xs, ys)
    return figure


@app.route("/img/Grafica.png")
def get_image():

    # Get the input arguments (e.g. /img/Grafica.png?title=test)
    # You can also use request.form here
    args = dict(request.args)

    # Create the figure or whatever you need to plot
    figure = create_figure(**args)

    # Create a buffer to hold the PNG
    buffer = io.BytesIO()

    # Write the figure as PNG to the buffer
    FigureCanvas(figure).print_png(buffer)

    # Return the binary contents of the buffer, set the mimetype to indicate to the browser that we've send an image
    return Response(buffer.getvalue(), mimetype="image/png")


@app.route("/graficar")
def get_graficar():
    return render_template("Grafica.html")


if __name__ == "__main__":
    app.run(debug=True)

模板/Grafica.html

<!doctype html>

<section class="content">
  <h1>Graficar</h1>
  <img src="/img/Grafica.png?title=My title" />
</section>
 类似资料:
  • 问题内容: 我正在使用签名的Java小程序从用户的文件系统加载图像。 然后,我想在运行小程序的网站中显示此图像。 我知道如何在applet和JavaScript之间进行通信,但是我只使用字符串和数字作为参数。 如何处理图像对象,如何在网站上显示它们? 如果需要,我可以在applet中转换格式以匹配JavaScript。 编辑: 我通过JSObject的调用将Image对象从Java传递给了java

  • 我正在从我的数据库中调用一个产品图像url,在前端页面中,我有一些css对页面上的图像进行样式化。但是,我需要将产品图像的url传递到css,它指定了图像的url... 我的CSS: 显示背景图像的产品页面 如果将product-image放在div中,它将呈现产品图像。如何将此url传递到CSS中?所以没有-> -> 我将有 这可能吗?

  • 问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从

  • 我将图像路径(来自图库的图像)存储在SQLite数据库中,现在加载到图像视图中。。。并使用此代码: 和错误: E/BitmapFactory:无法解码流:java.io.FileNotFoundException:/storage/emulated/0/DCIM/Camera/IMG_20161230_224205.jpg(权限被拒绝)

  • 我正在尝试使用意图打开一个图像。我存储中图像的路径是 /storage/emulated/0/nitp/download/logo.png. 我的代码是 我也尝试把文件://存储/仿真/0/nitp/下载/logo.png和内容://存储/仿真/0/nitp/下载/logo.png 我应该走哪条路? 解决了必须使用file:///storage/emulated/0/nitp/downloads/

  • Activity-2(将所选图像设置为屏幕背景图像的活动)