将图像从 base64 转换为图像并保存在 django 中的数据库中

hyp*_*rta 6 html javascript python django ajax

我正在尝试导出一个字符串 base64,它表示从 canvas html5 中获取的图像,这是 javascript 中的代码:

var canvas1 = $("#canvas1")[0];
var ctx1 = canvas1.getContext('2d');
dataURL1 = canvas1.toDataURL();
Run Code Online (Sandbox Code Playgroud)

Whit ajax 我将图像发送到服务器:

$.ajax({
    type: "POST",
    url: "/regiter_respuesta_agilidad/",
    data:{
        'imagen1': dataURL1,
    }
});
Run Code Online (Sandbox Code Playgroud)

在 django 的 views.py 中,我使用 base64.b64decode 将字符串导出到图像:

imagen1 = request.POST['imagen1']
image_data = base64.b64decode(imagen1)
imagene = ContentFile(image_data, 'imagen1.png')
answer = Answer(imagen=imagene)
Run Code Online (Sandbox Code Playgroud)

在models.py中我有:

class Answer(models.Model):
    imagen = models.ImageField(upload_to=url)
Run Code Online (Sandbox Code Playgroud)

问题是保存图像时,文件 imagen1.png 已损坏,我无法打开它,有人可以帮我解决这个问题吗?或者有其他方法可以做到这一点吗?非常感谢您。

Kev*_*one 1

我猜您需要删除 .data:返回的数据 URI canvas.toDataURL();

快速谷歌搜索发现了一些设计用于在 python 中解析数据 uri 的代码https://gist.github.com/zacharyvoase/5538178和另一个:dataurl.py