从Canvas获取绘图图像到Flask

我正在编写一个小型Flask应用,用于识别手写数字(0-9)。我已经编写了几乎所有元素(机器学习模型、Web应用等),但在捕获图像(使用Canvas绘制)方面遇到了问题,如下所示:

在此输入应用屏幕

我想获取图像并将其保存到临时文件中。我熟悉Python,但从未使用过JavaScript,而JavaScript是使用Canvas所必需的。

HTML:

<form method="post"  action="{{url_for('main.image')}}">    <button name="img" onclick="drawDataURIOnCanvas();">获取png</button></form>

JS:

function InitThis() {        ....    } function Draw(x, y, isDown) {        .... function drawDataURIOnCanvas() {      var element = document.createElement('a');      element.setAttribute('href',  document.getElementById('Canvas').toDataURL('image/jpeg'));      element.setAttribute('download', 'chart.jpeg');      element.style.display = 'none';      document.body.appendChild(element);      element.click();    }

函数drawDataURIOnCanvas()使用浏览器保存管理器保存图像,但我希望将其保存到临时文件中,并在稍后使用该图像。


回答:

遗憾的是,由于安全考虑,浏览器不允许你以编程方式将文件保存到用户的文件系统中。因为这是针对Flask应用程序的,你应该从<canvas>标签中读取图像信息,并通过XHR/AJAX或标准的<form>将图像信息直接发送到应用。这假设你是临时写入,以便Flask可以从磁盘读取它。

如果你绝对需要使用临时文件来实现这个功能,你可以通过编写浏览器插件/扩展来绕过这一限制,但在Chrome的情况下,你可能需要结合使用扩展和应用来获得必要的文件访问权限。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注