如何在python flask服务器中保存base64镜像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python flask服务器中保存base64镜像相关的知识,希望对你有一定的参考价值。

我尝试保存来自HTTP post请求的base64图像字符串,出于某种原因,我得到了多个不同的错误

binascii.Error:填充不正确

此外,我看看这个StackOverflow问题,但不工作Convert string in base64 to image and save on filesystem in Python

但最后,我得到一个0字节的png文件

我的问题是如何在我的服务器文件系统上保存base64字符串图像

I get this error

return binascii.a2b_base64(s)

What I get is this format from the client side:

数据:图像/ JPEG; BASE64,/ 9J / 4AAQSkZJRgABAQEASABIAAD / 2wCEAAICAgICAgMCAgMFAwMDBQYFBQUFBggGBgYGBggKCAgIC ..... AgICgoKC / vuJ91GM9en4hT / AI3TLT8PoqYVw //ž

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))
答案

在执行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文件扩展名保存它们很奇怪。

以上是关于如何在python flask服务器中保存base64镜像的主要内容,如果未能解决你的问题,请参考以下文章

Python Flask教程学习02

Python Flask教程学习02

python flask-sqlalchemy如何设置使自动建的mysql表字符集charset为utf8

如何使用flask将模型部署为服务

Python 3图像base64而不保存到html img标签

如何在Python Flask框架中运行重复任务