微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
76
scripts/ops/compare_interactive.py
Normal file
76
scripts/ops/compare_interactive.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
board-coach 交互态像素级对比脚本。
|
||||
|
||||
用法:
|
||||
python scripts/ops/compare_interactive.py <h5_filename> <mp_filename>
|
||||
|
||||
功能:
|
||||
1. 读取 H5 截图(DPR=3, 宽 1290px)和 MP 截图(DPR=1.5, 宽 645px)
|
||||
2. MP 截图 resize 到宽度 1290px(×2 缩放,LANCZOS)
|
||||
3. 裁剪两者到相同高度(取较短者)
|
||||
4. 保存为 cmp-h5.png 和 cmp-mp.png 供外部 diff 工具使用
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from PIL import Image
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
SCREENSHOTS_DIR = ROOT / "docs" / "h5_ui" / "screenshots"
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 3:
|
||||
print(f"用法: python {sys.argv[0]} <h5_filename> <mp_filename>")
|
||||
sys.exit(1)
|
||||
|
||||
h5_name = sys.argv[1]
|
||||
mp_name = sys.argv[2]
|
||||
|
||||
h5_path = SCREENSHOTS_DIR / h5_name
|
||||
mp_path = SCREENSHOTS_DIR / mp_name
|
||||
|
||||
if not h5_path.exists():
|
||||
print(f"错误: H5 截图不存在 → {h5_path}")
|
||||
sys.exit(1)
|
||||
if not mp_path.exists():
|
||||
print(f"错误: MP 截图不存在 → {mp_path}")
|
||||
sys.exit(1)
|
||||
|
||||
h5_img = Image.open(h5_path)
|
||||
mp_img = Image.open(mp_path)
|
||||
|
||||
print(f"H5: {h5_img.size[0]}×{h5_img.size[1]}")
|
||||
print(f"MP: {mp_img.size[0]}×{mp_img.size[1]}")
|
||||
|
||||
# MP ×2 缩放到 1290px 宽
|
||||
target_width = 1290
|
||||
mp_scale = target_width / mp_img.size[0]
|
||||
mp_new_height = int(mp_img.size[1] * mp_scale)
|
||||
mp_resized = mp_img.resize((target_width, mp_new_height), Image.LANCZOS)
|
||||
print(f"MP resized: {mp_resized.size[0]}×{mp_resized.size[1]}")
|
||||
|
||||
# H5 保持原宽(应已是 1290px)
|
||||
h5_resized = h5_img
|
||||
if h5_img.size[0] != target_width:
|
||||
h5_scale = target_width / h5_img.size[0]
|
||||
h5_new_height = int(h5_img.size[1] * h5_scale)
|
||||
h5_resized = h5_img.resize((target_width, h5_new_height), Image.LANCZOS)
|
||||
print(f"H5 resized: {h5_resized.size[0]}×{h5_resized.size[1]}")
|
||||
|
||||
# 裁剪到相同高度(取较短者)
|
||||
min_height = min(h5_resized.size[1], mp_resized.size[1])
|
||||
h5_cropped = h5_resized.crop((0, 0, target_width, min_height))
|
||||
mp_cropped = mp_resized.crop((0, 0, target_width, min_height))
|
||||
print(f"裁剪后尺寸: {target_width}×{min_height}")
|
||||
|
||||
# 保存
|
||||
out_h5 = SCREENSHOTS_DIR / "cmp-h5.png"
|
||||
out_mp = SCREENSHOTS_DIR / "cmp-mp.png"
|
||||
h5_cropped.save(out_h5)
|
||||
mp_cropped.save(out_mp)
|
||||
print(f"已保存: {out_h5.name}, {out_mp.name}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user