【问题标题】:Getting drawing image from canvas to flask从画布获取绘图图像到烧瓶
【发布时间】:2020-03-04 18:40:53
【问题描述】:

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

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

HTML:

<form method="post"  action="{{url_for('main.image')}}">
    <button name="img" onclick="drawDataURIOnCanvas();">Get 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() 使用浏览器保存管理器 保存图像,但我想将其保存到临时文件并稍后使用图像。

【问题讨论】:

    标签: javascript python machine-learning flask canvas


    【解决方案1】:

    很遗憾,出于安全考虑,浏览器不允许您以编程方式将文件保存到用户的文件系统。由于这是一个 Flask 应用程序,您应该改为从 &lt;canvas&gt; 标签读取图像信息,并通过 XHR/AJAX 或标准 &lt;form&gt; 将图像信息直接发送到应用程序。这是假设您正在临时编写它,以便 Flask 可以从磁盘读取它。

    如果您绝对必须使用临时文件,那么您可以通过编写浏览器插件/扩展来解决此限制,但对于 chrome,您可能需要同时使用扩展和应用程序来获得必要的文件访问权限。

    【讨论】:

    • 我不需要下载图像。我只需要通过 ML 模型识别它的图像,所以我只需要“关于图像的信息”。你知道如何使用
      读取这些信息吗?
    • 您已经在使用document.getElementById('Canvas').toDataURL('image/jpeg')) 阅读它。您可以在&lt;form&gt; 内的&lt;input&gt; 元素上使用这个和set the value attribute,将数据发送到您的应用程序。如果您还没有端点,您将需要 Flask 中的端点来处理此问题。这是一篇您可能会觉得有帮助的文章:towardsdatascience.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2013-08-13
    • 2013-11-01
    相关资源
    最近更新 更多