将Base64字符串保存为.PNG不起作用

时间:2015-07-01 17:08:32

标签: javascript python django google-visualization

我有一个使用Google Charts获得的base64字符串。 该项目是用Python / Django / Javascript编写的,如果有帮助的话。

chartStr = chart.getImageURI()

我想在服务器上将此字符串保存为.png。

我试过

with open('foo.png',"wb") as f:
    f.write(chartStr.decode('base64'))

但是我的填充错误不正确。我通过在字符串chartStr的末尾添加一个'='来解决这个问题。当我这样做时,foo.png图像被创建,但是当我尝试打开它时,我收到错误消息

读取PNG图像文件时出现致命错误:不是PNG文件

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

当您将=添加到字符串时,.decode("base64")返回的字符串与输入字符串相同,减去附加的=

要将.png写入文件,您需要执行以下操作:

head, data = chartStr.split(",", 1)
with open('foo.png',"wb") as f:
     f.write(data.decode('base64'))

这会删除data:image/png;base64,内容并留下一些base64编码数据。