Pyrebase 在 json 中发送个人资料图片

Pyrebase sending profile pic in json

我正在使用 prebase auth.create_user_with_email_and_password 创建用户帐户。然后我将用户的数据存储在 firebase 实时数据库中。 db.child("users").push("data") 其中 data= {"name": name, "email" : email, "password": password, "picture": picture}. 这里的图片是; picture = request.files['file'] 但是我无法将图片与用户的其他数据一起发送,图像无法在 json 对象中发送。 我们如何上传图片,有一些上传图像数据的解决方案,但我想将它与其他数据一起发送,这样它可能会与用户数据的其他属性一起存储。

我建议您使用两种方法:

解决方案一: 您可以将图像存储在文件系统中的任何目录(即 img_dir)并重命名以确保名称是唯一的。 (我通常使用时间戳前缀)(myimage_20210101.jpg)。现在您可以将此名称存储在数据库中。然后,在生成 JSON 的同时,你拉取这个文件名,生成一个完整的 URL (http://myurl.com/img_dir/myimage_20210101.jpg) 然后你可以将它插入到 JSON.

方案二: 使用 Base 64 Encoding 对图像进行编码并在获取时对其进行解码。 请记住首先通过调用 .decode() 转换为字符串,因为在不知道其编码的情况下无法 JSON 序列化字节。 那是因为 base64.b64encode returns 字节,而不是字符串。

import base64
encoded_= base64.b64encode(img_file.read()).decode('utf-8')

如何保存 encoded64 图片?

my_picture= 'data:image/jpeg;base64,/9j/4AAQSkZJRgAB............'

您需要先对图片进行base64解码,然后保存到文件中:

import base64

# Separate the metadata from the image data
head, data = my_picture.split(',', 1)

# Decode the image data
plain_image = base64.b64decode(data)

# Write the image to a file
with open('image.jpg', 'wb') as f:
    f.write(plain_image)