javascript - 如何使用 Flask 将 Canvas url 转换为图像 numpy 数组?

标签 javascript python html flask html5-canvas

我正在将 canvas 转换为 url 并使用 Flask 通过 ajax POST 请求将其发送到 python。我得到的网址是正确的,甚至打印出来,两者都是相同的。但我不知道如何恢复图像。我搜索互联网,大多数答案都说使用解码方法,但我收到错误,解码无法在“str”对象上工作。我还尝试将 StringIO 与 Image.open 一起使用,这也给出了错误。那么,有人可以告诉我该怎么做吗? 我的JS:

$SCRIPT_ROOT = {
  {
    request.script_root | tojson | safe
  }
};
$(function() {
      $("#pic").bind('click', function() {
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        var imgURL = canvas.toDataURL();

        $.ajax({
          type: "POST",
          url: $SCRIPT_ROOT + '/send_pic',
          data: {
            imageBase64: imgURL
          }
        }).done(function() {
          console.log("sent");
        });
      });

我的Python代码:

@app.route('/send_pic',methods=['GET','POST'])
def button_pressed():
    print("Image recieved")
    data_url = request.values['imageBase64']      
    img = Image.open(StringIO(data_url))
    img  = np.array(img)
    cv2.imshow(img)
    cv2.waitKeys(0)
    cv2.destroyAllWindows()

    return ""

data_url 的值为:

data:image/png;base64,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

谢谢!!!

最佳答案

从您的代码中我了解到,在您的端点中您需要 base64 数据。如果是这样,你可以尝试这样的事情:

import base64
from io import BytesIO

@app.route('/send_pic',methods=['GET','POST'])
def button_pressed():
    print("Image recieved")
    data_url = request.values['imageBase64']
    # Decoding base64 string to bytes object
    img_bytes = base64.b64decode(data_url)
    img = Image.open(BytesIO(img_bytes))
    img  = np.array(img)
    cv2.imshow(img)
    cv2.waitKeys(0)
    cv2.destroyAllWindows()
    return ""

编辑: 如果您发送的数据不是 base64,那么您可以尝试使用 numpy 对其进行转换,如下所示:

from flask import request
...
img_data = np.fromstring(request.data, np.uint8)
# Do what you want with it
cv2.imshow(img)

编辑 2: 根据您提供的值,您必须从请求中拆分值才能获取 Base64 图像数据:

@app.route('/send_pic',methods=['GET','POST'])
def button_pressed():
    print("Image recieved")
    data_url = request.values['imageBase64']
    # Decoding base64 string to bytes object
    offset = data_url.index(',')+1
    img_bytes = base64.b64decode(data_url[offset:])
    img = Image.open(BytesIO(img_bytes))
    img  = np.array(img)
    cv2.imshow(img)
    cv2.waitKeys(0)
    cv2.destroyAllWindows()
    return ""

关于javascript - 如何使用 Flask 将 Canvas url 转换为图像 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198488/

相关文章:

javascript - chart.js-datalabels-plugins 不起作用

javascript - 我想从 javascript 随机改变渐变 Angular

python - 双 for 循环列表理解

python - 仅将 Python 中字符串的首字母大写

javascript - 索引键上的 cursor.skip() 总是更快吗?

javascript - redux Actions 必须是普通对象,但我定义了普通对象

没有方法的Python模块包

html - 下拉菜单不显示

jquery - jQuery removeClass 有问题

javascript - 如何为一个 div 设置动画以显示并移动到另一个 div 上方