I try to save a base64 image string that comes from HTTP post request and for some reason, I get multiple different errors
binascii.Error: Incorrect padding
Also, i look at this StackOverflow question but is not working Convert string in base64 to image and save on filesystem in Python
but in the end, I get a png file that is 0 bytes
My question is how I can save a base64 string image on my server filesystem
I get this error
return binascii.a2b_base64(s)
What I get is this format from the client side:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wCEAAICAgICAgMCAgMFAwMDBQYFBQUFBggGBgYGBggKCAgIC.....AgICgoKC/vuJ91GM9en4hT/AI3TLT8PoqYVw//Z
From the client side I send this request
{
"img" : "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wCEAAICAgICAgMCAgMFAwMDBQYFBQUFBggGBgYGBggKCAgIC.....AgICgoKC/vuJ91GM9en4hT/AI3TLT8PoqYVw//Z"
}
in my python code, I have this method to read and save the base64 image
@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))