【问题标题】:Django - Save base64 image from template to staticDjango - 将base64图像从模板保存到静态
【发布时间】:2014-05-09 10:16:29
【问题描述】:

我想知道是否可以将生成的图像从我的模板保存到 MEDIA_URL? 我的图片是用 base64 生成的,我想给它起个名字,并将它保存为 png 或 jpeg 到 MEDIA_URL

<img id="canvasImg" style="display:none;" src="data:image/png;base64,iVB...">

我的图像是使用html2canvas 脚本生成的。然后我使用这个函数将画布转换为图像:

function canvas2img(){
      html2canvas(document.getElementById("bg"), {
        onrendered: function(canvas) {      
          canvas.setAttribute("id", "canvas");
          var dataURL = canvas.toDataURL('image/png', 1.0);
          document.getElementById('canvasImg').src = dataURL;  
        }
      })
   };

谢谢!

【问题讨论】:

  • 您能提供更多信息吗?您的图像是如何以及在哪里生成的?
  • 用更多信息编辑了我的问题。

标签: python django base64


【解决方案1】:

我不会在这里发布完整的代码,只是一些指导,一切都来自 StackOverflow:

首先您需要使用 AJAX 将 base64 图像发送到 django:https://stackoverflow.com/a/13198699/263989

然后在AJAX函数中获取base64:

from django.http import HttpResponse
def get_bas64(request):
    if request.is_ajax():
        # process the image
        return HttpResponse('')

使用 PIL https://stackoverflow.com/a/19911883/263989 将 base64 字符串转换为图像

【讨论】:

  • 非常感谢您的回复,但我无法将 base64 图像发送到 django。你能解释一下怎么做吗?
  • 我收到The view userdata.views.get_base64 didn't return an HttpResponse object.
  • 是的,你需要返回一个HTTPResponse,我编辑了答案
  • 好的,但我似乎无法向我的视图发送 AJAX 请求,它总是返回“Not Ajax”@login_required @csrf_exempt def get_base64(request): if request.is_ajax(): pic = cStringIO.StringIO() image_string = cStringIO.StringIO(base64.b64decode(request.POST['file'])) image = Image.open(image_string) image.save(pic, image.format, quality = 100) pic.seek(0) return HttpResponse(pic, content_type='image/jpeg') else: return HttpResponse("Not AJAX")
  • 我已经创建了像 facebook 和 amazon 一样的图片上传!感谢您的解决方案!
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
相关资源
最近更新 更多