"""산외교 J 겹침 시험(수정4)의 전·후 비교 이미지 — Rhino 캡처(결과/캡처/lap_before|after_*.png)를 라벨과 함께 한 장으로 합친다.""" import json from pathlib import Path from PIL import Image, ImageDraw, ImageFont ROOT = Path(r"D:\★Pier 자료\프로그램\Pier_T") CAP = ROOT / "Code" / "검토수정" / "결과" / "캡처" OUT = ROOT / "검토파일" / "수정후_캡처" FONT = r"C:\Windows\Fonts\malgun.ttf" FONTB = r"C:\Windows\Fonts\malgunbd.ttf" F = lambda s, b=False: ImageFont.truetype(FONTB if b else FONT, s) ROWS = [("C7", "C7~C9 · 형식 II (수직 스터럽)", "수정 전: 닫힌 ㅁ 한 개", "수정 후: 뚜껑 ⊓ (빨강, 다리 C 660) + 바닥 ⊔ (파랑, 전체 높이), 다리에서 660 겹침"), ("C10", "C10 · 형식 III (수평 띠, 평면)", "수정 전: 닫힌 ㅁ 한 개", "수정 후: 왼쪽 ㄷ (파랑) + 오른쪽 ㄷ (빨강), 위·아래 변 가운데에서 J 660 겹침"), ("C12", "C12 · 형식 XII (수평 띠 R400, 평면)", "수정 전: 닫힌 ㅁ 한 개", "수정 후: 좌·우 ㄷ 두 조각, 위·아래 변 가운데에서 J 660 겹침 (모서리 R400)"), ("C13", "C13 · 형식 VIII (갈고리 직선, 평면)", "수정 전: 갈고리 달린 한 개", "수정 후: 갈고리 달린 두 조각이 가운데에서 J 660 겹침")] W = 760 rows = [] for m, title, lb, la, in ROWS: b = Image.open(CAP / ("lap_before_%s.png" % m)).convert("RGB") a = Image.open(CAP / ("lap_after_%s.png" % m)).convert("RGB") b = b.resize((W, int(b.height * W / b.width))) a = a.resize((W, int(a.height * W / a.width))) h = max(a.height, b.height) band = Image.new("RGB", (W * 2 + 12, 44), (40, 40, 40)) ImageDraw.Draw(band).text((10, 6), title, font=F(26, True), fill=(255, 255, 255)) row = Image.new("RGB", (W * 2 + 12, 44 + h + 70), (255, 255, 255)) row.paste(band, (0, 0)) row.paste(b, (0, 44)) row.paste(a, (W + 12, 44)) d = ImageDraw.Draw(row) d.text((8, 44 + h + 6), lb, font=F(22, True), fill=(170, 40, 30)) d.text((W + 20, 44 + h + 6), la, font=F(21, True), fill=(20, 110, 50)) rows.append(row) H = 110 + sum(r.height for r in rows) + 12 * len(rows) out = Image.new("RGB", (rows[0].width, H), (255, 255, 255)) bd = Image.new("RGB", (out.width, 100), (30, 120, 60)) ImageDraw.Draw(bd).text((14, 8), "산외교 코핑 전단철근 — J(겹침) 반영 시험 전·후 (Rhino 캡처)", font=F(38, True), fill=(255, 255, 255)) ImageDraw.Draw(bd).text((14, 60), "대호지교 방식(⊓ 뚜껑 + ⊔ 바닥 / 좌·우 ㄷ)으로 겹침 J 표기. 겹침부는 같은 선 위에서 겹침. 조각 색은 구분용(빨강/파랑)", font=F(22), fill=(255, 255, 255)) out.paste(bd, (0, 0)) y = 110 for r in rows: out.paste(r, (0, y)) y += r.height + 12 p = OUT / "산외교_J겹침_시험_전후.png" out.save(p) print(p.name, out.size)