从base64代码保存图片

时间:2013-01-29 16:50:32

标签: python django base64

我想将此图片保存为base64,但是当我尝试执行此操作时,会出现以下错误:

Traceback (most recent call last):
  File "E:\Programs\Python\lib\site-packages\django\core\handlers\base.py", line
 116, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "E:\RSYearWork\ServerRS\Views\TestForAjaxView.py", line 27, in addAjax
    f.write(decodestring(request.POST['UplaodFile']))
  File "E:\Programs\Python\lib\base64.py", line 321, in decodestring
    return binascii.a2b_base64(s)
Error: Incorrect padding

bace64:

这是由base64 JavaScript和Filereader生成的,与上传图片时生成代码完全相同。使用Ajax我发送了它。 这个base64自动生成。

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

2 个答案:

答案 0 :(得分:4)

您需要删除前导data:image/png;base64,。只有,之后的所有内容都是base64数据。

也许这样的事情(从你的调用堆栈猜测):

_, b64data = request.POST['UplaodFile'].split(',') # [sic]
f.write(decodestring(b64data))

编辑:回答Krasimir的评论:

.split(',')(在本例中)返回一个包含两个字符串的元组,即逗号前后的数据(,)。第一个字符串是'data:image/png;base64'。第二个字符串是base64数据。左侧使用tuple unpacking将这两个字符串分配给名为_b64data的变量。 _只是一个变量,您可以将其重命名为任何有意义的变量。 _ is typically used in tuple unpacking to signal "I don't care about this part".

答案 1 :(得分:0)

删除前导“data:image / png; base64”,解码并保存为二进制数据。

Storage

现在,您可以使用图像阅读器在操作系统中打开并查看图像。