File size: 940 Bytes
04aed77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import base64
import io
from PIL import Image


def compress_image(base64_str, quality=85, max_size=(1024, 1024)):
    """
    压缩base64编码的图片

    参数:
        base64_str: base64编码的图片字符串
        quality: 压缩质量 (1-100)
        max_size: 最大尺寸 (宽, 高)

    返回:
        压缩后的base64编码字符串
    """
    try:

        img_data = base64.b64decode(base64_str)
        img = Image.open(io.BytesIO(img_data))


        if img.width > max_size[0] or img.height > max_size[1]:
            img.thumbnail(max_size, Image.LANCZOS)


        output = io.BytesIO()
        img.save(output, format="PNG", optimize=True, quality=quality)


        compressed_base64 = base64.b64encode(output.getvalue()).decode("utf-8")
        return compressed_base64
    except Exception as e:
        print(f"图片压缩失败: {e}")
        return base64_str  # 如果压缩失败,返回原始图片