Files
Neo-ZQYY/scripts/ops/resize_and_compare_v2.py

88 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
v2: 统一到逻辑宽度 430px 后对比。
H5 截图 1290px (DPR 3) → 缩放到 430px
小程序截图 645px (DPR 1.5) → 缩放到 430px
然后裁剪到相同高度对比。
"""
import sys
from pathlib import Path
from PIL import Image
SCREENSHOTS_DIR = Path(__file__).resolve().parents[2] / "docs" / "h5_ui" / "screenshots"
LOGICAL_WIDTH = 430
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 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_img = Image.open(h5_path)
mp_img = Image.open(mp_path)
print(f"H5 原始: {h5_img.width}×{h5_img.height} (DPR 3, 逻辑 {h5_img.width/3:.0f}×{h5_img.height/3:.0f})")
print(f"MP 原始: {mp_img.width}×{mp_img.height} (DPR 1.5, 逻辑 {mp_img.width/1.5:.0f}×{mp_img.height/1.5:.0f})")
# 方案: 都缩放到 1290px 宽H5 原始宽度),保持 H5 不变
# MP 需要 ×2 缩放
TARGET_W = 1290
h5_resized = SCREENSHOTS_DIR / "cmp-h5.png"
mp_resized = SCREENSHOTS_DIR / "cmp-mp.png"
h5_r = resize_to_width(h5_path, h5_resized, TARGET_W)
mp_r = resize_to_width(mp_path, mp_resized, TARGET_W)
print(f"\nH5 缩放后: {h5_r['width']}×{h5_r['height']}")
print(f"MP 缩放后: {mp_r['width']}×{mp_r['height']}")
# MP 逻辑高度 = 1128/1.5 = 752px → 物理高度 752×3 = 2256px (在 DPR3 下)
# H5 前 2256px 对应逻辑前 752px
# 所以裁剪 H5 到 2256px 高度MP 已经是 2256px
mp_logical_h = mp_img.height / 1.5 # 752
h5_crop_h = int(mp_logical_h * 3) # 2256 (DPR 3 下的物理像素)
print(f"\nMP 逻辑高度: {mp_logical_h:.0f}px")
print(f"H5 裁剪到: {h5_crop_h}px (对应逻辑 {mp_logical_h:.0f}px)")
# 裁剪 H5
h5_full = Image.open(h5_resized)
h5_cropped = h5_full.crop((0, 0, TARGET_W, h5_crop_h))
h5_cropped.save(h5_resized)
# MP 已经是 2256px 高,确认
mp_full = Image.open(mp_resized)
if mp_full.height != h5_crop_h:
print(f"⚠️ MP 高度 {mp_full.height} != H5 裁剪高度 {h5_crop_h},裁剪 MP")
mp_cropped = mp_full.crop((0, 0, TARGET_W, min(mp_full.height, h5_crop_h)))
mp_cropped.save(mp_resized)
# 也裁剪 H5 到相同高度
final_h = min(mp_full.height, h5_crop_h)
if h5_crop_h > final_h:
h5_cropped2 = Image.open(h5_resized).crop((0, 0, TARGET_W, final_h))
h5_cropped2.save(h5_resized)
final_h5 = Image.open(h5_resized)
final_mp = Image.open(mp_resized)
print(f"\n最终对比尺寸:")
print(f" H5: {final_h5.width}×{final_h5.height}")
print(f" MP: {final_mp.width}×{final_mp.height}")
print(f"\n✅ 可用 image-compare 对比:")
print(f" 图1: {h5_resized}")
print(f" 图2: {mp_resized}")
if __name__ == "__main__":
main()