Python如何读取base64图片数据

在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)

总结

以上为个人经验,希望能给大家一个参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岚月清辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值