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 # 如果压缩失败,返回原始图片
|