42 lines
2.2 KiB
Python
42 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# 2026-10-02 PD 지시 — "피드백 해준 기준에 맞는지 검토해서 배경을 투명하게 … 리소스화". 생성한 아이콘 폴더를 채점해 검토용 시트로 묶는다.
|
|
# python icon_review_sheet.py <폴더> <round 이름(파일 머리말)> [한 시트의 줄 수=10]
|
|
# 파일 이름 규칙: <round>_<대상>_s<강도>_<순번>.png. 채점은 comfy_moba_batch.score(불투명 비율 · 가장자리 닿음 · 한 덩어리).
|
|
import glob, os, sys
|
|
from PIL import Image, ImageDraw
|
|
from comfy_moba_batch import score
|
|
|
|
|
|
def main():
|
|
folder, tag = sys.argv[1], sys.argv[2]
|
|
rows_per = int(sys.argv[3]) if len(sys.argv) > 3 else 10
|
|
groups, order = {}, []
|
|
for path in sorted(glob.glob(os.path.join(folder, tag + "_*_s*_*.png")), key=os.path.getmtime):
|
|
name = os.path.basename(path)[len(tag) + 1:].rsplit("_s", 1)[0]
|
|
if name not in groups:
|
|
groups[name] = []; order.append(name)
|
|
groups[name].append(path)
|
|
cell, pad, left = 240, 4, 90
|
|
cols = max(len(v) for v in groups.values())
|
|
for page in range(0, len(order), rows_per):
|
|
names = order[page:page + rows_per]
|
|
sheet = Image.new("RGB", (left + cols * (cell + pad) + pad, len(names) * (cell + pad) + pad), (24, 24, 28))
|
|
draw = ImageDraw.Draw(sheet)
|
|
for i, name in enumerate(names):
|
|
y = pad + i * (cell + pad)
|
|
draw.text((pad, y + 4), name, fill=(240, 220, 160))
|
|
for k, path in enumerate(sorted(groups[name])):
|
|
im = Image.open(path).convert("RGBA")
|
|
ok, opaque, edge, mainc = score(im)
|
|
# 투명 배경 확인용으로 중간 회색 바탕에 올린다
|
|
bg = Image.new("RGB", (cell, cell), (52, 52, 58)); small = im.resize((cell, cell), Image.LANCZOS); bg.paste(small, (0, 0), small)
|
|
x = left + k * (cell + pad)
|
|
sheet.paste(bg, (x, y))
|
|
draw.text((x + 3, y + 2), "#%d %s op%.2f ed%.2f mn%.2f" % (k, "OK" if ok else "X", opaque, edge, mainc), fill=(120, 255, 120) if ok else (255, 120, 120))
|
|
out = os.path.join(folder, "%s_review_%d.png" % (tag, page // rows_per))
|
|
sheet.save(out); print(out)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|