"""옥성교 기초 B1·B2·B11, 코핑 C1·C2 J 겹침 수정 전(수정6)·후(수정7) 비교 이미지. 입력 jobs/cap/out/okF_{before,after}_*.png""" from pathlib import Path from PIL import Image, ImageDraw, ImageFont CAP = Path(r"C:\Users\User\AppData\Local\PierApp\jobs\cap\out") OUT = Path(r"D:\★Pier 자료\프로그램\Pier_T\검토파일\수정후_캡처\옥성교_J겹침_전후.png") F = lambda s, b=False: ImageFont.truetype(r"C:\Windows\Fonts\malgunbd.ttf" if b else r"C:\Windows\Fonts\malgun.ttf", s) cols = [("B1", "기초 B1 (j 1,530)"), ("B2", "기초 B2 (j 1,070)"), ("B11", "기초 B11 (j 560)"), ("C1", "코핑 C1 (j 1,510)"), ("C2", "코핑 C2 (j 1,510)")] W = 600 ims = {(t, m): Image.open(CAP / ("okF_%s_%s.png" % (t, m))).convert("RGB") for t in ("before", "after") for m, _ in cols} ims = {k: v.resize((W, int(v.height * W / v.width))) for k, v in ims.items()} h = ims[("before", "B1")].height per = 3 rows = 2 # two blocks of before/after rows out = Image.new("RGB", (W * per + 24, 110 + 2 * (2 * (h + 38)) + 10), (255, 255, 255)) d = ImageDraw.Draw(out) d.rectangle([0, 0, out.width, 100], fill=(40, 40, 40)) d.text((14, 8), "옥성교 J 겹침 반영 — 수정 전(수정6)·후(수정7), Rhino 캡처 (대표 1본, 빨강/파랑 = 2개 조각)", font=F(28, True), fill=(255, 255, 255)) d.text((14, 56), "도면 철근 상세의 j(겹침이음 길이)를 반영: 긴 직선 구간 중앙에서 2조각이 j 만큼 겹침 (산외교 기초·코핑과 같은 방식)", font=F(22), fill=(255, 255, 255)) y = 110 for blk in (cols[:3], cols[3:]): for t, lab, col in (("before", "수정 전: 1본 연속", (170, 40, 30)), ("after", "수정 후: 2조각 j 겹침", (30, 120, 60))): for i, (m, title) in enumerate(blk): x = i * (W + 12) d.text((x + 4, y), "%s — %s" % (title, lab), font=F(20, True), fill=col) out.paste(ims[(t, m)], (x, y + 30)) y += h + 38 out = out.crop((0, 0, out.width, y)) out.save(OUT); print(OUT, out.size)