#!/bin/bash # 게임 화면을 검정 여백까지 그대로 찍는다(UI 포함). source capfull.sh 뒤 capfull <이름> # bt.sh 의 cap 은 검정 여백을 잘라 내므로, 화면 전체의 구성(어디가 비고 어디에 게임이 그려지는지)을 볼 때는 이것을 쓴다 capfull() { local name="$1" unity command capture_game_view --source screen --project-path "$P" --format json --no-banner 2>&1 | python -c " import sys, json, base64, io d = json.loads(sys.stdin.read()) r = (d.get('data') or {}).get('result') or {} def find(o): if isinstance(o, dict): for k, v in o.items(): if isinstance(v, str) and len(v) > 1000: return v f = find(v) if f: return f if isinstance(o, list): for v in o: f = find(v) if f: return f return None def meta(o, keys=('width', 'height', 'source')): out = {} if isinstance(o, dict): for k, v in o.items(): if k in keys and not isinstance(v, (dict, list)): out[k] = v elif isinstance(v, dict): out.update(meta(v, keys)) return out b = find(r) if not b: print('NO IMAGE', json.dumps(d)[:500]); sys.exit(0) data = base64.b64decode(b) out = r'$SP/cap/$name.png' from PIL import Image im = Image.open(io.BytesIO(data)).convert('RGB') full = im.size gray = im.convert('L').point(lambda p: 255 if p > 10 else 0) box = gray.getbbox() im.save(out) print('saved', out, 'size', full, 'meta', meta(r), '검정이 아닌 영역', box) " }