Initial commit: yu-zhi-ran platform with automation integration

This commit is contained in:
lt
2026-04-19 14:05:09 +08:00
commit 3cb2df51c8
209 changed files with 80379 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env python3
"""
压缩公众号配图
目标:每张PNG < 80KB,保持清晰度
"""
import os
from PIL import Image
IMAGES_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images"
OUTPUT_DIR = "/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran/content/publishing/images_compressed"
os.makedirs(OUTPUT_DIR, exist_ok=True)
def compress_png(input_path, output_path, target_kb=80):
img = Image.open(input_path)
# 如果图片较大,适当缩小(保持长宽比)
max_width = 1200
if img.width > max_width:
ratio = max_width / img.width
new_size = (max_width, int(img.height * ratio))
img = img.resize(new_size, Image.Resampling.LANCZOS)
print(f" 缩放: {img.width}x{img.height}")
# 尝试不同压缩级别保存
for optimize in [True, False]:
for quality in [85, 80, 75, 70]:
img.save(output_path, format='PNG', optimize=optimize, compress_level=6, quality=quality)
size_kb = os.path.getsize(output_path) / 1024
if size_kb <= target_kb:
return size_kb, quality, optimize
# 如果还是大,强制用最高压缩
img.save(output_path, format='PNG', optimize=True, compress_level=9)
return os.path.getsize(output_path) / 1024, 9, True
if __name__ == "__main__":
files = sorted([f for f in os.listdir(IMAGES_DIR) if f.endswith('.png')])
print(f"开始压缩 {len(files)} 张图片...\n")
total_before = 0
total_after = 0
for f in files:
inp = os.path.join(IMAGES_DIR, f)
out = os.path.join(OUTPUT_DIR, f)
size_before = os.path.getsize(inp) / 1024
total_before += size_before
size_after, quality, opt = compress_png(inp, out)
total_after += size_after
status = "" if size_after <= 80 else "⚠️"
print(f"{status} {f}")
print(f" {size_before:5.1f}KB → {size_after:5.1f}KB (q={quality}, opt={opt})")
print(f"\n总计: {total_before:.1f}KB → {total_after:.1f}KB")
print(f"压缩率: {(1-total_after/total_before)*100:.1f}%")
print(f"\n压缩文件已保存至: {OUTPUT_DIR}")