""" borderRadius A/B 对比拼接脚本 拼接三张已有截图为一张对比图:H5 baseline | A: ×2 | B: ×0.875 """ from pathlib import Path from PIL import Image, ImageDraw, ImageFont PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent OUT_DIR = PROJECT_ROOT / "export" / "screenshots" / "radius_compare" def create_comparison(): h5_path = OUT_DIR / "h5_baseline.png" mp_a_path = OUT_DIR / "mp_a_x2.png" mp_b_path = OUT_DIR / "mp_b_875.png" for p in [h5_path, mp_a_path, mp_b_path]: if not p.exists(): raise FileNotFoundError(f"缺少截图: {p}") h5 = Image.open(h5_path) mp_a = Image.open(mp_a_path) mp_b = Image.open(mp_b_path) # 统一到相同高度(取最小高度) target_h = min(h5.height, mp_a.height, mp_b.height) def resize_to_h(img, th): ratio = th / img.height return img.resize((int(img.width * ratio), th), Image.LANCZOS) h5 = resize_to_h(h5, target_h) mp_a = resize_to_h(mp_a, target_h) mp_b = resize_to_h(mp_b, target_h) label_h = 80 gap = 30 total_w = h5.width + mp_a.width + mp_b.width + gap * 2 total_h = target_h + label_h canvas = Image.new("RGB", (total_w, total_h), (255, 255, 255)) draw = ImageDraw.Draw(canvas) # 字体 try: font = ImageFont.truetype("msyh.ttc", 40) except Exception: try: font = ImageFont.truetype("arial.ttf", 40) except Exception: font = ImageFont.load_default() labels_and_x = [ ("H5 原型 (baseline)", 0), ("A: ×2 圆角 (当前)", h5.width + gap), ("B: ×2×0.875 圆角", h5.width + gap + mp_a.width + gap), ] images = [h5, mp_a, mp_b] for i, (label, x) in enumerate(labels_and_x): draw.text((x + 10, 15), label, fill=(0, 0, 0), font=font) canvas.paste(images[i], (x, label_h)) out_path = OUT_DIR / "comparison_abc.png" canvas.save(str(out_path), quality=95) print(f"[Done] 对比图: {out_path}") print(f" 尺寸: {total_w}x{total_h}") return out_path if __name__ == "__main__": create_comparison()