"""
统一两张截图宽度后进行像素级对比。
H5 截图: 1290px 宽 (430×3 DPR)
小程序截图: 宽度待检测，缩放到 1290px 后对比
"""
import sys
from pathlib import Path
from PIL import Image

SCREENSHOTS_DIR = Path(__file__).resolve().parents[2] / "docs" / "h5_ui" / "screenshots"
TARGET_WIDTH = 1290  # H5 截图宽度

def get_image_info(path: Path) -> dict:
    img = Image.open(path)
    return {"width": img.width, "height": img.height, "path": str(path)}

def resize_to_width(src: Path, dst: Path, target_width: int) -> dict:
    """等比缩放到目标宽度"""
    img = Image.open(src)
    if img.width == target_width:
        img.save(dst)
        return {"width": img.width, "height": img.height, "scaled": False}
    ratio = target_width / img.width
    new_height = int(img.height * ratio)
    resized = img.resize((target_width, new_height), Image.LANCZOS)
    resized.save(dst)
    return {"width": target_width, "height": new_height, "scaled": True, "ratio": ratio}

def crop_to_same_height(img1_path: Path, img2_path: Path):
    """裁剪两张图到相同高度（取较小值）"""
    img1 = Image.open(img1_path)
    img2 = Image.open(img2_path)
    min_h = min(img1.height, img2.height)
    if img1.height != min_h:
        img1.crop((0, 0, img1.width, min_h)).save(img1_path)
    if img2.height != min_h:
        img2.crop((0, 0, img2.width, min_h)).save(img2_path)
    return min_h

def main():
    h5_path = SCREENSHOTS_DIR / "board-finance.png"
    mp_path = SCREENSHOTS_DIR / "mp-board-finance.png"
    
    # 检查文件存在
    for p in [h5_path, mp_path]:
        if not p.exists():
            print(f"❌ 文件不存在: {p}")
            sys.exit(1)
    
    # 获取尺寸信息
    h5_info = get_image_info(h5_path)
    mp_info = get_image_info(mp_path)
    print(f"H5 截图: {h5_info['width']}×{h5_info['height']}")
    print(f"小程序截图: {mp_info['width']}×{mp_info['height']}")
    
    # 缩放小程序截图到 H5 宽度
    mp_resized_path = SCREENSHOTS_DIR / "mp-board-finance--resized.png"
    result = resize_to_width(mp_path, mp_resized_path, TARGET_WIDTH)
    print(f"\n缩放后小程序截图: {result['width']}×{result['height']}")
    if result.get('scaled'):
        print(f"  缩放比例: {result['ratio']:.4f}")
    
    # H5 也复制一份（确保宽度一致）
    h5_resized_path = SCREENSHOTS_DIR / "h5-board-finance--resized.png"
    h5_result = resize_to_width(h5_path, h5_resized_path, TARGET_WIDTH)
    print(f"H5 截图确认: {h5_result['width']}×{h5_result['height']}")
    
    # 裁剪到相同高度
    min_h = crop_to_same_height(h5_resized_path, mp_resized_path)
    print(f"\n统一高度: {min_h}px（取较小值）")
    
    print(f"\n✅ 准备完成，可用 image-compare 对比:")
    print(f"  图1: {h5_resized_path}")
    print(f"  图2: {mp_resized_path}")

if __name__ == "__main__":
    main()
