# 改图 / 融图(Edit)改写规则 > 本文件由本插件自撰,面向 Qwen-Image 的改图契约。**不是**任何官方规范文本的复制件。 > 本插件的 `qwen_image_edit`(参考图编辑)**直接吃 `ratio_follow`**:它自己量参考图的实际像素, > 在 32 网格上挑最接近的一对做画布,并把偏差回报在 `ratio_deviation_percent` 里。 > 因此**不要**再手工把 `ratio_follow` 换算成 `wh_ratio`——契约里的两个字段原样传给工具。 只要用户给了参考图,**这永远是改图任务**,不是从零生成。 --- ## 一、两个语言决策(分开做,不要混) **(A)散文用什么语言** —— 双引号**之外**的描述文字: | 用户的指令语言 | 散文语言 | |---|---| | 中文 | 中文 | | 英文 | 英文 | | 其他任何语言(日、韩、法、泰…) | 英文 | **(B)图里要渲染的文字用什么语言** —— 双引号**之内**的内容,按优先级: 1. 用户给了确切文字,或点名了目标语言(「改成『夏日特惠』」「标题写成英文」)→ 照办。 2. 否则,参考图里已经有可读文字 → 用**图里文字的dominant语言**(哪怕指令是另一种语言)。 3. 否则(图里没字、用户也没点语言)→ 用**用户指令本身的语言**(日/韩/泰/阿/法都照用,不要一律推成英文)。 两条硬约束: - 引号内必须**单一语言**,不要中英混排、不要自作主张给双语对照(用户明确要才给)。 - **体裁不改变语言**:「规格表 / 电影数据面板 / 分镜 / 技术参数」的观感靠排版与字重做出来, 不是把所有标签换成英文;表头、字段名、说明文字都保持已定的语言(单位符号与用户给的原名可以留拉丁字母)。 ## 二、核心原则:属性解耦,该改的改到位 **只动用户点名的那几个属性,每个都推到明显可辨的强度;其余内容按输入原样锁住。** 两半都重要,两种失误是对称的: - **溢出**:动了没被点名的东西(锐化顺手改了调色、放大顺手改了构图、换风格把脸带跑了、 换装掉了配饰、换背景「顺手」清掉了没提的东西)。 - **改不到位**:成品和原图看起来没差别——因为改动下得太轻了。 保真条款锁的是**内容**,不是**改动的强度**。辨识度靠「点名哪些保持不变」买到,不是靠把效果收着。 ## 三、锚定什么、决定什么 - **锚在图上**:所有空间、色调、语境判断都来自画面实际可见的东西。拿不准某个细节存在不存在,就不要写它—— 把要保留的东西写得更抽象,永远比编一个具体细节安全。 - **说清保留什么,但不要重画它**:用**类型 + 位置 + 作用**点名未改动的部分,别去描述它的外观; 宁可一句笼统的保留条款,也不要走一遍画面。**你把要保留的东西描述得越具体,模型越可能把它重画跑偏。** 只有你真要改的部分、或只有描述才能消歧时,才写具体外观。 - **身份是最硬的约束**:人的面容身份与标志性配饰、产品的确切设计与数量标记、 以及输入的渲染语汇(照片 / 动画 / 插画 / 素描 / 3D 渲染 / 绘画),除非用户点名要改,否则一律保住。 身份来自参考图时,**指那张图**而不是用文字描述五官——文字描述会让模型重画并让人脸不像。 - **消歧之后要拍板**:把含糊的意图、不精确的方位、没有参数化的风格词落成具体可见的东西; 把抽象的画质词翻译成它对应的视觉属性。指令自相矛盾或给了选项时,选最合理的读法并把它写成决定。 保留用户自己的动作动词、空间关系与已述状态;用户说要保住的就当铁律。**物理上不可能但用户想要的效果,保留,不纠正。** - **只做被要求的事**:不加用户没提的操作;不管画面上的瑕疵、贴纸、杂物多显眼,都不要顺手清理。 当一次改动删掉/移走/露出某处时,要把新露出来的那块说到物理上自洽。 - **图里的文字是字面量**:成品里会出现可读文字时,就必须敲定确切字符——逐字、加引号、不许概括缩写。 敲不定的文字干脆不要加。排版与语言跟随输入已确立的口径,除非用户另有要求。 把画面往外扩时要明确写成 outpainting。 - **写成指令**:以「操作」开头,不要以「成品画面的描述」开头;视角是「手上只有这几张输入图的人」。 ## 四、参考图引用规则 - **N ≥ 2**:必须用 ``、``… 指代每张输入图。 不要用「图1」「第一张图」「the first image」这类自然语言指代——**这条没有例外**。 - **N = 1**:**不要**加标签,用「图像」「图片中」这种自然说法。 - **逐张说明用途**:哪张是提供构图与未改动内容的画布,哪张提供要转移的素材,各自贡献了什么。 - **没有画布的场景生成**(合影/合照等):所有图都是身份来源。逐张描述,不要为了省事把几张图压成「一组」。 ## 五、画布尺寸:`wh_ratio` 与 `ratio_follow` 互斥 两个字段**一个非空另一个必须是空字符串 `""`**,不允许同时有值。 **第 1 步:用户明说了尺寸或比例** → 取用户给的。`1920x1080` 这类确切像素先换算成比例。 `wh_ratio` = 该比例,`ratio_follow` = `""`。 (`2K`/`4K`/`8K` 是画质词,**不能**用来推比例。) **第 2 步:用户没说**: - **1 张输入图** → 默认跟随画布:`ratio_follow` = `""`,`wh_ratio` = `""`。 例外:只是拿输入图当身份参考去做「写真 / 换场景」时,改按语义给比例——肖像半身 `2:3`、 全身外景 `3:4`、横版场景 `3:2`;判断不了就仍然跟随 `""`。 - **N ≥ 2 张输入图** → 先认**画布图**:合成/放入取目标场景图;换脸/换头取身体图;换装取人物图; 风格迁移取内容图;换背景取前景主体图;局部替换取原图。 `ratio_follow` = 那张图的标签,`wh_ratio` = `""`。 - **扩图** → 不跟随原比例,按扩展方向推:只往左右扩(1:1 → `3:2`)、左右都扩(1:1 → `16:9`)、 只往上下扩(1:1 → `2:3`)、上下都扩(1:1 → `9:16`)、四边同扩(保持原比例)。 `wh_ratio` = 推出的比例,`ratio_follow` = `""`。 - **全景** → `2:1`;**三视图/多宫格** → 站姿三视图 `1:1`(别拉成 3:1)、车辆三视图 `3:1`、2×2 宫格 `1:1`。 `ratio_follow` = `""`。 **落到本插件时(`qwen_image_edit`)**: - `wh_ratio` 只接受官方 7 档(`1:1` / `4:3` / `3:4` / `3:2` / `2:3` / `16:9` / `9:16`);用户明说了比例时用它。 - `ratio_follow` 写 `"image1"`…`"image10"`(第 N 张参考图),也可以直接写 `images` 里的那一项(绝对路径 / data URI); 工具会量出那张图的**实际像素**,再按 ~1.5MP 预算在 32 网格上挑最接近的一对做画布—— 所以 `2:1`、`3:1`、`5:7`、`9:20` 这类超纲比例**照样跟随**(不必先取整到官方档), 结果里的 `ratio_deviation_percent` / `ratio_follow_image` 就是这次取整的账,照它说明一句即可。 ⚠️ 按 ~1.5MP 挑出的画布落在 **1216–1248**,在 `local` 后端上会让**本地编辑尺寸门默认拒绝**这次编辑 (见 `skill.md` 的「本地编辑尺寸门」):要走 `local` 得显式给更小的 `width`/`height`,或把 `localReferenceBudget` 调低(画布不动、降的是参考图条件化分辨率)。选画布这一步本身没有错。 - 两个字段**都为空**时工具默认跟随**第一张**参考图(编辑目标),不需要你替它挑一个。 - 同时给 `wh_ratio` 与 `ratio_follow` 会被工具**拒绝**(附契约理由);给了 `width`/`height` 时以它们为准。 ## 六、自检清单 - [ ] 引号外的散文语言 = 用户指令语言(中文→中文,其他→英文)? - [ ] 引号内的文字:按「用户指定 > 图中主导语言 > 指令语言」定过语言,且单一语言? - [ ] N ≥ 2 时用了 ``… 标注,N = 1 时没用标签? - [ ] 只改了点名的属性,且强度足够明显? - [ ] 未改动内容用「类型+位置+作用」一句带过,没有重画? - [ ] 身份类不变量(脸/产品设计/渲染语汇)都保住了? - [ ] `wh_ratio` 与 `ratio_follow` 恰好一个为空?比例没有写进散文? - [ ] 散文是**一整段**,没有 `\n`? ## 输出 ```json {"rewritten_prompt": "<改图指令,一整段>", "wh_ratio": "", "ratio_follow": ""} ```