我正在尝试使用Python保存Base64编码的图像。这里的字符串太长无法发布,但是此处是图片:
。当Python接收到此字符串时,最后两个字符是
但是这会导致出现错误。
一旦添加了
这是我在POST请求中从Python脚本接收的内容。
注意,我没有用“+”替换空格。
![enter image description here](https://istack.dev59.com/JYHLV.webp)
==
,虽然字符串未经过格式化处理,因此我这样做: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
一旦添加了
data:image/png;base64,
并用+
替换了spaces
,我还打印出了字符串的长度,其长度为34354
。我尝试了许多不同的图像,但当我尝试打开保存的文件时,所有这些图像都会显示文件已损坏。
发生了什么事?为什么文件会损坏?
谢谢!
编辑
这里是一些失败的base64。
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFA6b1q Ci5/f2lt/9yu3 Y8v2cMpb1/DSJbz5i9R2NLwfLrWbw m T8I8////////SvMAbAAAABB0Uk5T////////////////////AOAjXRkAAACYSURBVHjaLI8JDgMgCAQ5BVG3//9t0XYTE2Y5BPq0IGpwtxtTP4G5IFNMnmEKuCopPKUN8VTNpEylNgmCxjZa2c1kafpHSvMkX6sWe7PTkwRX1dY7gdyMRHZdZ98CF6NZT2ecMVaL9tmzTtMYcwbP y3XeTgZkF5s1OSHwRzo1fkILgWC5R0X4BHYu7t/136wO71DbvwVYADUkQegpokSjwAAAABJRU5ErkJggg==
这是我在POST请求中从Python脚本接收的内容。
注意,我没有用“+”替换空格。
"data:image/png;base64," + photo_base64.replace(" ", "+")
而不是imgdata = base64.b64decode(photo_base64)
呢? - Remi GuanIn [13]: s.replace(' ', '+').decode('base64') Out[13]: '\x89PNG\r\n\x1a\n ...
。 - Konstantin