python读取base64图片数据
在python中,可以使用base64模块来解码base64编码的字符串,并将其转换回原始的数据(如图片)。
但通常,base64编码的图片字符串会带有前缀(如data:image/jpeg;base64,),需要先去掉这个前缀再进行解码。
一个简单的例子
展示如何从base64编码的字符串中读取并保存图片:
import base64
import io
from pil import image
# 假设有一个base64编码的图片字符串,这里我们使用一个简化的示例
base64_str = "data:image/jpeg;base64,/9j/4aaqskzjrgabaqeaaaaaaad/4giosundx1bst0zjteuaaqeaaaiyaaaaaaiqaabtbnryukdcifhzjioumjy7...(此处省略其他base64编码的内容)"
# 去掉前缀('data:image/jpeg;base64,')
base64_data = base64_str.split(',')[1]
# 解码base64数据
image_bytes = base64.b64decode(base64_data)
# 将字节数据转换为bytesio对象
image_io = io.bytesio(image_bytes)
# 使用pil库读取图片
image = image.open(image_io)
# 保存图片到文件
image.save('output.jpg')注意:上面的base64字符串base64_str只是一个示例,需要将其替换为实际的base64编码的图片字符串。
而且,base64字符串可能以不同的mime类型开始(如data:image/png;base64,),需要相应地调整代码以匹配的字符串。
使用场景
以下是百度aistudio部署的应用为例:
# 获取base64图片数据
import requests
def query(payload, token='你自己的token令牌', appcode='你的appcode'):
api_url = f"https://{appcode}.aistudio-hub.baidu.com/image/generations"
headers = {
# 请前往 https://aistudio.baidu.com/index/accesstoken 查看 访问令牌
"authorization": f"token {token}",
"content-type": "application/json"
}
response = requests.post(api_url, headers=headers, json=payload)
return response.json()
def access_image(prompt):
output = query({
"prompt": f"{prompt}"
})
return output['data'][0]["b64_image"]
# base64数据转图片
import base64
import io
from pil import image
def decode_b64_image(base64_data):
# 解码base64数据
image_bytes = base64.b64decode(base64_data)
# 将字节数据转换为bytesio对象
image_io = io.bytesio(image_bytes)
# 使用pil库读取图片
image = image.open(image_io)
# 保存图片到文件
# image.save('output.jpg')
return image# 调用函数 prompt = "杰作,高品质,超精细,全细节,8k" base64_image = access_image(prompt) decode_b64_image(base64_image)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论