我试图保存来自HTTP请求的base64映像字符串,由于某些原因,我得到了多个不同的错误
binascii.Error:不正确的填充
另外,我看了这个StackOverflow问题,但没有使用Convert string in base64 to image and save on filesystem in Python。
但是最后,我得到一个png文件,它是0字节。
我的问题是如何在服务器文件系统上保存base64字符串映像。
我知道这个错误
返回binascii.a2b_base64(s)
我得到的是客户端的这种格式:
数据:image/jpeg;base64 64,/9j/4AAQSkZJRgABAQEASABIAAD/2wCEAAICAgICAgMCAgMFAwMDBQYFBQUFBggGBgYGBggKCAgIC.....AgICgoKC/vuJ91GM9en4hT/AI3TLT8PoqYVw//Z
我从客户端发送这个请求。
{
"img" : "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wCEAAICAgICAgMCAgMFAwMDBQYFBQUFBggGBgYGBggKCAgIC.....AgICgoKC/vuJ91GM9en4hT/AI3TLT8PoqYVw//Z"
}在我的python代码中,我有一个读取和保存base64映像的方法
@app.route('/upload', methods=['POST'])
def upload_base64_file():
"""
Upload image with base64 format and get car make model and year
response
"""
data = request.get_json()
# print(data)
if data is None:
print("No valid request body, json missing!")
return jsonify({'error': 'No valid request body, json missing!'})
else:
img_data = data['img']
# this method convert and save the base64 string to image
convert_and_save(img_data)
def convert_and_save(b64_string):
b64_string += '=' * (-len(b64_string) % 4) # restore stripped '='s
string = b'{b64_string}'
with open("tmp/imageToSave.png", "wb") as fh:
fh.write(base64.decodebytes(string))发布于 2017-12-23 08:34:12
执行base64.decodebytes(string)时会出现错误,因为变量string总是等于b'{b64_string}‘。它只是有一些不在Base64字母表中的字符。
你可以使用这样的东西:
def convert_and_save(b64_string):
with open("imageToSave.png", "wb") as fh:
fh.write(base64.decodebytes(b64_string.encode()))此外,奇怪的是,您发送JPEG文件并用PNG文件扩展名保存它们。
https://stackoverflow.com/questions/47950867
复制相似问题