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