用python保存base64图像

用python保存base64图像,python,image,base,Python,Image,Base,我试图用Base64编码的python保存一个图像。这里的字符串太大,无法发布,但这里是图像 当python接收到最后2个字符时,它们是=,尽管字符串没有格式化,所以我这样做 import base64 data = "data:image/png;base64," + photo_base64.replace(" ", "+") imgdata = base64.b64decode(data) filename = 'some_image.jpg' # I assume you

我试图用Base64编码的python保存一个图像。这里的字符串太大,无法发布,但这里是图像

当python接收到最后2个字符时,它们是
=
,尽管字符串没有格式化,所以我这样做

import base64
data = "data:image/png;base64," + photo_base64.replace(" ", "+")
imgdata = base64.b64decode(data)
    filename = 'some_image.jpg'  # I assume you have a way of picking unique filenames
    with open(filename, 'wb') as f:
            f.write(imgdata)
然后我就这么做了

import base64
data = "data:image/png;base64," + photo_base64.replace(" ", "+")
imgdata = base64.b64decode(data)
    filename = 'some_image.jpg'  # I assume you have a way of picking unique filenames
    with open(filename, 'wb') as f:
            f.write(imgdata)
但这导致了这个错误

Traceback (most recent call last):
  File "/var/www/cgi-bin/save_info.py", line 83, in <module>
    imgdata = base64.b64decode(data)
  File "/usr/lib64/python2.7/base64.py", line 76, in b64decode
    raise TypeError(msg)
TypeError: Incorrect padding
数据:image/png;base64,
已经添加,
空格
替换为
+
,它的长度为
34354
,我尝试了一系列不同的图像,但当我尝试打开保存的文件时,所有这些图像都表示文件已损坏

发生了什么,文件为什么损坏

谢谢

编辑

下面是一些同样失败的base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFA6b1q Ci5/f2lt/9yu3 Y8v2cMpb1/DSJbz5i9R2NLwfLrWbw m T8I8////////SvMAbAAAABB0Uk5T////////////////////AOAjXRkAAACYSURBVHjaLI8JDgMgCAQ5BVG3//9t0XYTE2Y5BPq0IGpwtxtTP4G5IFNMnmEKuCopPKUN8VTNpEylNgmCxjZa2c1kafpHSvMkX6sWe7PTkwRX1dY7gdyMRHZdZ98CF6NZT2ecMVaL9tmzTtMYcwbP y3XeTgZkF5s1OSHwRzo1fkILgWC5R0X4BHYu7t/136wO71DbvwVYADUkQegpokSjwAAAABJRU5ErkJggg==
这是我在python脚本中从POST请求中收到的内容


注:我没有将空格替换为+,不需要添加
数据:image/png;base64,
之前,我尝试使用下面的代码,效果很好

import base64
data = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFA6b1q Ci5/f2lt/9yu3 Y8v2cMpb1/DSJbz5i9R2NLwfLrWbw m T8I8////////SvMAbAAAABB0Uk5T////////////////////AOAjXRkAAACYSURBVHjaLI8JDgMgCAQ5BVG3//9t0XYTE2Y5BPq0IGpwtxtTP4G5IFNMnmEKuCopPKUN8VTNpEylNgmCxjZa2c1kafpHSvMkX6sWe7PTkwRX1dY7gdyMRHZdZ98CF6NZT2ecMVaL9tmzTtMYcwbP y3XeTgZkF5s1OSHwRzo1fkILgWC5R0X4BHYu7t/136wO71DbvwVYADUkQegpokSjwAAAABJRU5ErkJggg=='.replace(' ', '+')
imgdata = base64.b64decode(data)
filename = 'some_image.jpg'  # I assume you have a way of picking unique filenames
with open(filename, 'wb') as f:
        f.write(imgdata)

您能否添加一个小样本作为base64编码?使用非常小的图像(如favicon)。A好的,base64编码的图像中没有空间。那么为什么要使用
数据:image/png;base64,+photo\u base64。替换(“,”+”)
,而不仅仅是
imgdata=base64.b64解码(photo\u base64)
?@KevinGuan因为当我将send发送到python脚本时,+被空格替换,所以我只是将+'放回原处,Ali将发布一些data@AliNikneshan发布了一些数据你期望什么?Base64字符串不能包含空格,而您的示例字符串包含空格。如果我用“+”替换它,我会在[13]中收到一些PNG
:s.replace(“+”).decode('base64')Out[13]:“\x89PNG\r\n\x1a\n…