Flask 动态 graphviz 和 SVG 示例

Kei*_*thW 5 graphviz flask

我正在尝试创建 Graphviz 图像,但不是保存图像并加载到网页中,而是将其作为 SVG 传递。

它的工作原理如下:

from flask import Flask
from graphviz import Graph


app = Flask(__name__)


@app.route('/svgtest')
def svgtest():
  chart_data = Graph()

  chart_data.node('H', 'Hello')
  chart_data.node('W', 'World')
  chart_data.edge('H', 'W')

  chart_output = chart_data.pipe(format='svg')

 return render_template('svgtest.html', chart_output=chart_output)
Run Code Online (Sandbox Code Playgroud)

在我的 HTML 页面中我有

<embed type="image/svg+xml" src={{ chart_output|safe }} />
Run Code Online (Sandbox Code Playgroud)

但是输出不正确

输出示例

任何帮助都会很棒,我开始自言自语,但即使这样也没有帮助。

谢谢。

whi*_*rer 3

您可以像这样使用 svg:

{{ chart_output|safe }}
Run Code Online (Sandbox Code Playgroud)

另外,您还可以使用 png 格式:

@app.route('/')
def svgtest():
    chart_data = Graph()

    chart_data.node('H', 'Hello')
    chart_data.node('W', 'World')
    chart_data.edge('H', 'W')


    chart_output = chart_data.pipe(format='png')
    chart_output = base64.b64encode(chart_output).decode('utf-8')

    return render_template('svgtest.html', chart_output=chart_output)
Run Code Online (Sandbox Code Playgroud)

和这样的html:

<img src="data:image/png;base64,{{chart_output|safe}}" />
Run Code Online (Sandbox Code Playgroud)

快乐编码!