Javascript 使用python将base64字符串转换为png图像

Javascript 使用python将base64字符串转换为png图像,javascript,python,django,base64,Javascript,Python,Django,Base64,我正在开发一个Django应用程序,用户可以使用javascript触发网络摄像头并抓拍图片。这张图片存储在画布中。我想用python将此图像作为base64字符串检索,将其转换为png文件并保存到Django服务器中。这是到目前为止我的代码 HTML模板 <center> <button type="button" name="button" class='btn btn-outline-dark btn-lg' id='start'>Start Video C

我正在开发一个Django应用程序,用户可以使用javascript触发网络摄像头并抓拍图片。这张图片存储在画布中。我想用python将此图像作为base64字符串检索,将其转换为png文件并保存到Django服务器中。这是到目前为止我的代码

HTML模板

<center>
    <button type="button" name="button" class='btn btn-outline-dark btn-lg' id='start'>Start Video Capture</button>

    <div class="container-fluid mt-2">
        <video id="video" width="640" height="480" autoplay></video><br>
        <button type="button" data-toggle="modal" data-target="#image_model" class="btn btn-lg btn-dark" id="snap">Snap Photo</button>
    </div>
</center>

<center>
    <canvas id="canvas" width="640" height="480"></canvas>
</center>

<button type="button" class="btn btn-secondary" data-dismiss="modal">Retake</button>
<form class="image_to_server" action="{% url 'img_submit' %}" method="post">
    {% csrf_token %}
    <input type="text" name="base64Field" value="" id='base64'>
    <input type="submit" value="Use Image" class="btn btn-primary" id="use_image">
</form>
Django views.py

def img_submit(request):
    if request.method == 'POST':
        data =  request.POST.get('base64Field')
        byte_data = base64.b64decode(data)
        image_data = BytesIO(byte_data)
        img = Image.open(image_data)

    return HttpResponse(data)
我得到了一个python代码的“错误填充错误”。我不确定我做错了什么。或者如何纠正这个错误


我按照这个编写python代码。

您没有从字符串中删除头,这意味着它不仅仅是b64数据
如果您查看示例,您将看到以下几行

import re
base64_data = re.sub('^data:image/.+;base64,', '', data)
删除标题后,您应该能够将字符串用作b64

我说的标题看起来像这样
data:image/png;base64,

如错误所述,检查填充(确保b64字符串正确)。请注意,它在您提供的链接中被编辑了一点。我将数据直接从js发送到django,而之前没有对其进行任何处理。所以我不确定base64字符串怎么可能是错误的。有什么帮助吗???打印并查看它,甚至将它(标记为代码)添加到您的问题中,这样我们就可以查看它您希望我打印整个base64字符串吗。我是初学者,还不懂base64。我也无法将整个base64字符串添加到StackOverflow。您也可以打印它并提供链接
import re
base64_data = re.sub('^data:image/.+;base64,', '', data)