Files
sixGuoDjango/wechat_项目工具包/图片转换工具包/图片转数据.py
T

42 lines
1.1 KiB
Python
Raw Normal View History

2026-09-19 16:13:13 +08:00
import os
import django
from django_six_demo.settings import base_dir_name
os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value=f"{base_dir_name}.settings")
django.setup()
from pydantic import BaseModel, Field
from pathlib import Path
import base64
from PIL import Image
from typing import Union
class ImageToDataURI(BaseModel):
"""图片转 Data URI 工具类"""
data_uri: str = Field(description="Data URI 格式的图片数据")
@classmethod
def from_path(cls, file_path: Union[str, Path]) -> "ImageToDataURI":
"""从文件路径转换"""
path = Path(file_path)
if not path.exists():
raise FileNotFoundError(f"文件不存在: {path}")
# 读取原始字节
file_bytes = path.read_bytes()
# 获取 MIME 类型
img = Image.open(path)
mime_type = img.get_format_mimetype() or "image/png"
print(mime_type)
# 转 Base64 并拼接 Data URI
base64_str = base64.b64encode(file_bytes).decode("utf-8")
data_uri = f"data:{mime_type};base64,{base64_str}"
return data_uri
if __name__ == "__main__":
pass