我正在使用matplotlib在Web应用程序中渲染某些图形。我以前fig.savefig()
只在运行脚本时使用过。但是,我需要一个函数来返回实际的“ .png”图像,以便可以使用HTML进行调用。
更多(可能不必要的)信息:我正在使用Python Flask。我认为我可以使用fig.savefig()
该图形并将其粘贴在我的静态文件夹中,然后从我的HTML中调用它,但是我宁愿每次都不要这样做。如果我可以仅创建图形,从中创建图像,返回该图像,然后从HTML调用它,然后它消失,那将是最佳选择。
创建图形的代码起作用。但是,它返回一个数字,我猜这不适用于HTML。
这是我draw_polygon
在路由中调用的地方,它draw_polygon
是返回图形的方法:
@app.route('/images/<cropzonekey>')
def images(cropzonekey):
fig = draw_polygons(cropzonekey)
return render_template("images.html", title=cropzonekey, figure = fig)
这是我尝试生成图像的HTML。
<html>
<head>
<title>{{ title }} - image</title>
</head>
<body>
<img src={{ figure }} alt="Image Placeholder" height="100">
</body>
</html>
而且,你可能会猜到,当我加载页面时,我得到的仅仅是Image Placeholder。因此,他们不喜欢我提供的图形格式。
有谁知道matplotlib的哪些方法/解决方法可以将图形转换为实际图像?我到处都是这些文档,但找不到任何东西。谢谢!
顺便说一句:认为没有必要包含构成该图的python代码,但如果你们需要查看它,我可以将其包括在内(只是不想让这个问题杂乱无章)
你必须将HTML和图像分成两个不同的路径。
你的/images/<cropzonekey>
路线将仅投放该页面,并且该页面的HTML内容中将引用第二条路线,即用于提供图片的路线。
映像是通过你使用生成的内存文件以其自己的路径提供的savefig()
。
我显然没有对此进行测试,但是我相信以下示例将按原样运行或使你接近可行的解决方案:
@app.route('/images/<cropzonekey>')
def images(cropzonekey):
return render_template("images.html", title=cropzonekey)
@app.route('/fig/<cropzonekey>')
def fig(cropzonekey):
fig = draw_polygons(cropzonekey)
img = StringIO()
fig.savefig(img)
img.seek(0)
return send_file(img, mimetype='image/png')
你的images.html模板将变为:
<html>
<head>
<title>{{ title }} - image</title>
</head>
<body>
<img src="{{ url_for('fig', cropzonekey = title) }}" alt="Image Placeholder" height="100">
</body>
</html>
这个网页让我相信我可以将一个空字符串传递给,以关闭图形的y记号。 但是,当我尝试这样做时,我得到以下错误: 怎么回事?如果这种关闭y型刻度的方法是不正确的,那么正确的方法是什么?
问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后
问题内容: 我试图将URI对象传递给我的Intent,以便在另一个活动中使用该URI。 如何传递URI? 现在如何在其他活动中使用此URI? 感谢你们 问题答案: 您可以将uri存储为字符串 然后像这样将字符串转换回uri
问题内容: 我正在使用签名的Java小程序从用户的文件系统加载图像。 然后,我想在运行小程序的网站中显示此图像。 我知道如何在applet和JavaScript之间进行通信,但是我只使用字符串和数字作为参数。 如何处理图像对象,如何在网站上显示它们? 如果需要,我可以在applet中转换格式以匹配JavaScript。 编辑: 我通过JSObject的调用将Image对象从Java传递给了java
问题内容: 我试图将SharedPreferences首选项作为AsyncTask中doInBackground函数的参数传递。我已经给它传递了一个字符串(URL),所以我也需要将首选项也作为字符串传递。我可以简单地使用prefs.toString()将其转换为字符串吗? 这是我设置偏好的地方: 问题答案: 你不能,你不应该。您可以轻松地读取内部首选项,而无需将任何内容传递给方法,只需使用即可:
我在jsp页面中有html表,动态加载数据库中的数据,然后我想通过servlet将表中的所有数据保存到数据库中。现在我的问题是,我有一个jsp页面,其中显示来自servlet的数据表,其中包含复选框,我必须将选中的内容发送到servlet,以便更新到数据库,如何做到这一点。 提前谢谢,这是我的桌子