#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 路径C组装:apiyi 三图融合(风格 + 外立面 + 窗户字汇表)→ 单元南立面。 在 Python 内部用绝对路径调 cmd_fuse,避开 Windows shell 传中文路径给 Python argv 的 GBK 乱码坑。 注意:image_gen.py 的 cmd_fuse 当前硬编码 size=1024x1024(方图)。 路径C首图先用方图验证「三图融合能否成功 + 窗户准确度」; 若窗户对、只是横向比例挤,再改 cmd_fuse 支持 size 出 1536x1024 横图。 """ import sys from pathlib import Path # 注意:不在这里重定向 stdout/stderr —— image_gen.py 开头已做 TextIOWrapper(UTF-8) 重定向, # 重复包装同一个 buffer 会导致底层文件被提前关闭("I/O operation on closed file")。 HERE = Path(__file__).resolve().parent # tools/ RESEARCH = HERE.parent # ai-art-research/ sys.path.insert(0, str(HERE)) from image_gen import get_client, cmd_fuse STYLE = RESEARCH / "参考图" / "游戏截图" / "深夏时光" / "深夏时光-下午-街景.png" CONTENT = [ RESEARCH / "参考图" / "真实场景" / "东井村" / "QQ20260616-174350.png", RESEARCH / "生成结果" / "窗户标准件" / "标准件合集图.png", ] PROMPT_FILE = RESEARCH / "prompts" / "居民楼-单元南立面-路径C-窗户字汇表-v1.txt" for p in [STYLE] + CONTENT + [PROMPT_FILE]: if not p.exists(): print(f"❌ 缺失: {p}") sys.exit(1) prompt = PROMPT_FILE.read_text(encoding="utf-8") client = get_client() # cmd_fuse 上传顺序 = [style, *content],与 prompt 里 图1=风格/图2=外立面/图3=窗户表 的编号一致 cmd_fuse( client, style_path=str(STYLE), content_paths=[str(c) for c in CONTENT], prompt=prompt, model=None, subdir="路径C组装", )