微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
77
scripts/ops/resize_and_compare.py
Normal file
77
scripts/ops/resize_and_compare.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""
|
||||
统一两张截图宽度后进行像素级对比。
|
||||
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()
|
||||
Reference in New Issue
Block a user