您现在的位置是:网站首页 > 博客日记 >

python将图像base64编码

作者:YXN-python 阅读量:126 发布日期:2024-10-14

import base64
from io import BytesIO
from PIL import Image


def PIL_base64(img, coding='utf-8'):
    """
    将PIL图像对象转换为base64编码字符串。
    PIL_base64(Image.open('E:/照片/28.jpg'))

    参数:
    - img (PIL.Image): 要转换的PIL图像对象。
    - coding (str): base64字符串的编码类型,默认为'utf-8'。

    返回:
    - str: 图像的base64编码字符串。
    """
    # 确定图像格式
    img_format = img.format if img.format else 'JPEG'

    # 根据图像格式设置格式字符串
    format_str = 'JPEG'
    if img_format.lower() == 'png':
        format_str = 'PNG'
    elif img_format.lower() == 'gif':
        format_str = 'GIF'

    # 如果图像在调色板模式下,转换为RGB
    if img.mode == "P":
        img = img.convert('RGB')
    # 如果图像在RGBA模式下,转换为PNG
    elif img.mode == "RGBA":
        format_str = 'PNG'
        img_format = 'PNG'

    # 创建BytesIO缓冲区以保存图像
    output_buffer = BytesIO()
    # 将图像保存到缓冲区,质量设置为最高
    img.save(output_buffer, quality=100, format=format_str)
    # 从缓冲区获取字节数据
    byte_data = output_buffer.getvalue()
    # 将字节数据编码为base64,并添加数据URL头部
    base64_str = 'data:image/{};base64,'.format(img_format.lower()) + base64.b64encode(byte_data).decode(coding)

    return base64_str


# 使用案例
if __name__ == "__main__":
    base64_img = PIL_base64(Image.open('E:\\照片\\28.jpg'))
    print(base64_img)

YXN-python

2024-10-14