在Python中,可以使用base64
模块来解码Base64编码的字符串,并将其转换回原始的数据。
但通常,Base64编码的图片字符串会带有前缀(如data:image/jpeg;base64,
),需要先去掉这个前缀再进行解码。
一个简单的例子
展示如何从Base64编码的字符串中读取并保存图片:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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部署的应用为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # 获取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" ] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 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 |
1 2 3 4 | # 调用函数 prompt = "杰作,高品质,超精细,全细节,8k" base64_image = access_image(prompt) decode_b64_image(base64_image) |
总结
以上为个人经验,希望能给大家一个参考。