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)
我正在使用 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)