簡體   English   中英

使用python將base64字符串轉換為png圖像

[英]Convert base64 string to png image with python

我正在使用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>

JavaScript代碼

// Grab elements, create settings, etc.
var video = document.getElementById('video');
// Elements for taking the snapshot
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

$('#start').click(function() {
    // Get access to the camera!
    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia({
            video: true
        }).then(function(stream) {
            //video.src = window.URL.createObjectURL(stream);
            video.srcObject = stream;
            video.play();
        });
    }

    $('#snap').fadeIn();

    // Trigger photo take
    $('#snap').click(function() {
        context.drawImage(video, 0, 0, 640, 480);
        var dataURL = canvas.toDataURL();
        $('#base64').val(dataURL)

        $("#use_image").click(function() {
            console.log('clicked');
        });
    });

});

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,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM