微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,55 @@
"""
分析 diff 图的像素差异分布,按纵向区域统计差异密度。
输出每 50px 逻辑高度段的差异百分比,帮助定位需要调整的区域。
"""
from pathlib import Path
from PIL import Image
import struct
SCREENSHOTS_DIR = Path(__file__).resolve().parents[2] / "docs" / "h5_ui" / "screenshots"
def analyze_diff_image(diff_path: Path, band_height: int = 150):
"""按纵向条带分析 diff 图的红色像素密度"""
img = Image.open(diff_path).convert("RGB")
w, h = img.size
pixels = img.load()
print(f"Diff 图尺寸: {w}×{h}")
print(f"条带高度: {band_height}px (逻辑 {band_height/3:.0f}px)")
print(f"{'区域':>8} {'逻辑Y':>8} {'差异像素':>10} {'总像素':>10} {'差异%':>8} {'条形图'}")
print("-" * 80)
bands = []
for y_start in range(0, h, band_height):
y_end = min(y_start + band_height, h)
diff_count = 0
total = 0
for y in range(y_start, y_end):
for x in range(w):
r, g, b = pixels[x, y]
total += 1
# diff 图中红色/品红色像素表示差异
if r > 200 and g < 100:
diff_count += 1
pct = (diff_count / total * 100) if total > 0 else 0
bar = "" * int(pct / 2)
logical_y = y_start / 3
print(f"{y_start:>6}-{y_end:<6} {logical_y:>6.0f}px {diff_count:>10,} {total:>10,} {pct:>7.1f}% {bar}")
bands.append({"y_start": y_start, "y_end": y_end, "diff_pct": pct})
# 找出差异最大的区域
top_bands = sorted(bands, key=lambda b: b["diff_pct"], reverse=True)[:5]
print(f"\n差异最大的 5 个区域:")
for b in top_bands:
logical_y = b["y_start"] / 3
print(f" 逻辑 Y={logical_y:.0f}px: {b['diff_pct']:.1f}%")
def main():
diff_path = SCREENSHOTS_DIR / "diff-board-finance-v2.png"
if not diff_path.exists():
print(f"❌ diff 图不存在: {diff_path}")
return
analyze_diff_image(diff_path, band_height=150)
if __name__ == "__main__":
main()