python PIL图片转base64字符串
以下是使用Python PIL库将图片转换为Base64字符串的详细步骤和代码示例:
方法一:直接读取文件(无需图像处理)
import base64# 读取图片二进制数据
with open("input.jpg", "rb") as file:img_data = file.read()# 转换为Base64字符串
base64_str = base64.b64encode(img_data).decode('utf-8')# 输出结果(可选Data URL格式)
data_url = f"data:image/jpeg;base64,{base64_str}"
print(data_url)
方法二:使用PIL处理后转换(推荐)
from PIL import Image
import io
import base64# 1. 打开图片文件
img = Image.open("input.jpg")# 2. (可选)图像处理示例
img = img.resize((200, 200)) # 调整尺寸
img = img.convert("RGB") # 转换模式(如去除透明度)# 3. 创建内存缓冲区
buffer = io.BytesIO()# 4. 保存处理后的图片到缓冲区
img.save(buffer, format="PNG") # 可指定格式:JPEG/PNG等# 5. 获取二进制数据并编码
base64_str = base64.b64encode(buffer.getvalue()).decode('utf-8')# 6. 生成完整Data URL(可选)
data_url = f"data:image/png;base64,{base64_str}"
print(data_url)
关键说明:
-
安装依赖:需先安装Pillow库
pip install Pillow
-
格式选择:
format
参数需与文件扩展名匹配(如保存为PNG格式应使用.png
扩展名)- 常见格式:JPEG(有损压缩)、PNG(无损压缩)、WEBP(现代格式)
-
Data URL:
- 格式为:
data:[MIME类型];base64,[Base64字符串]
- 示例:
data:image/png;base64,iVBORw0KGgoAAAAN...
- 格式为:
-
应用场景:
- 网页直接显示图片:
<img src="{data_url}">
- API传输二进制数据
- 数据库存储图片
- 网页直接显示图片:
常见问题处理:
-
透明通道问题:
img = img.convert("RGBA") # 保留透明度
-
质量调整(JPEG):
img.save(buffer, format="JPEG", quality=85) # 质量参数1-100
-
大文件优化:
# 分块读取处理 from PIL import ImageFile ImageFile.LOAD_TRUNCATED_IMAGES = True
建议根据实际需求选择处理方式,如需保留图片元数据可使用img.info
属性获取额外信息。