你要一张 9:16 竖屏发 Reels,结果出来 1:1 方图。或者打了 --ar 21:9 想要电影宽屏,出来却是 16:9。画面内容没问题,就是长宽比错了。
这几乎一定是 UI 或参数问题,不是模型问题。每个平台解析长宽比的方式不一样,有些模型会静默忽略这个 flag,少数模型干脆不支持极端比例。
最快的修法: 在平台自己的控件里设比例,别写在自然语言里。Midjourney 用 --ar flag;ChatGPT 和 Gemini 接受一句话请求(“做成 16:9”);本地的 SDXL/Flux 要在 Width 和 Height 字段里填明确数值。如果你把 Midjourney 的 flag 打进了一个不是 Midjourney 的工具,它会被当成普通文字吞掉。下面是分平台的语法、当前的支持比例列表(2026 年 6 月核对)、以及导致返回方图的那些覆盖陷阱。
你属于哪一类?
| 症状 | 最可能的原因 | 跳到 |
|---|---|---|
在 Midjourney 之外打 --ar 9:16,出方图 | 平台语法不对 | Step 1 |
| ChatGPT 怎么问都返回 1:1 | 只有 3 种尺寸;没说清比例 | Step 1(ChatGPT) |
| Gemini 不理 “16:9”,一直方图 | 措辞没被识别 / 走了老 Imagen 路径 | Step 1(Gemini) |
| 本地 UI 无视 prompt,输出 1024x1024 | UI 的 Width/Height 覆盖了 prompt | Step 4 |
9:16 出 1:1 但 2:3 正常 | 极端比例不在模型支持集里 | Step 2 + Step 3 |
| 像素看着对,但比例算错了 | 你把 768x1344 当成 9:16 | Step 5 |
| 模型输出对,导出错了 | 自动导出/预览又裁了一次 | Step 6 |
常见原因,按命中率排序
1. 长宽比参数语法和平台不匹配
--ar 9:16 是 Midjourney 的 flag。把它粘进 SDXL UI、ChatGPT 或 Gemini,会被当成普通 prompt 文字忽略,于是你拿到模型的默认值(通常是 1:1)。
如何判断: 你的比例写法是 --ar X:Y,但你不在 Midjourney 上。
2. 模型只有固定的几种输出尺寸
托管模型往往只开放几个预设。ChatGPT 的图像模型(gpt-image-1,DALL-E 3 于 2026 年 5 月 12 日退役后的替代品)只输出 1024x1024、1024x1536(竖)或 1536x1024(横)。没有连续的比例控制,也没有 --ar flag。
如何判断: 文档或尺寸下拉框只列出两三个固定尺寸。
3. UI 默认值覆盖了 prompt
你在 prompt 里写了 16:9,但 UI 的 Width/Height(或分辨率下拉框)设的是方图。在 ComfyUI、A1111、Forge 里,明确的数值字段永远盖过 prompt 里的文字。
如何判断: UI 分辨率字段和你用文字要求的不一致。
4. 模型不支持这个极端比例
非常宽或非常高的比例(32:9、1:5)超出了 checkpoint 的训练范围,模型会贴到最接近的支持档位。
如何判断: 9:16 出 1:1,但 2:3 正常——模型支持集受限。
5. 按像素设的,但比例算错了
你设 768x1344 以为是 9:16。算一下:768/1344 = 0.571,是 4:7,不是 9:16(= 0.5625)。对 SDXL 这是有意为之(768x1344 是最接近竖屏的 1 兆像素训练档位),但如果你要的是精确 9:16,就差了一点。
如何判断: 宽除以高,对比目标比例。
6. 保存或导出环节改了长宽比
模型生成是对的,但平台的预览或自动导出又裁了一次(Instagram 方图预览、社交卡片裁切等)。
如何判断: 下载原始 PNG,查它真实的尺寸。
最短修复路径
Step 1:用每个平台正确的控件
# Midjourney(v7 / v8——flag,不能用小数)
"... --ar 9:16"
"... --ar 16:9"
"... --ar 1:1" (默认)
"... --ar 21:9"
"... --ar 3:2"
# 小数会被拒:用 139:100,不要写 1.39:1
# ChatGPT(gpt-image-1)——自然语言,只有 3 种尺寸
"做成 9:16 竖屏" -> 1024x1536
"做成 16:9 宽屏" -> 1536x1024
"方图" -> 1024x1024 (默认)
# 没有 --ar flag;其它任何比例都会贴到这三种里最近的一个
# Gemini(Nano Banana 2 / Gemini 3.1 Flash Image)——自然语言
"用 16:9 生成" # 或 9:16、4:3、3:4、2:3、3:2、5:4、4:5、21:9、1:1
# API:在 ImageConfig 里设 aspect_ratio,例如 aspect_ratio="16:9"
# SDXL via A1111 / Forge——在 UI 里设 Width x Height
- 1:1 -> 1024x1024
- ~3:4 -> 896x1152
- ~2:3 -> 832x1216
- 竖屏(最接近 9:16 的档位) -> 768x1344
- ~4:3 -> 1152x896
- ~3:2 -> 1216x832
- 接近 16:9 -> 1344x768
- ~21:9 -> 1536x640
# 总像素保持在 ~1 兆像素附近;两边都能被 64 整除
# Flux dev(ComfyUI)
- EmptyLatentImage / EmptySD3LatentImage 节点,设 width 和 height
- 尺寸能被 16 整除(32 最稳);单边最小 1024;0.2-2 兆像素区间
Step 2:先生成支持的比例,再裁
对于没有模型能干净支持的比例(32:9、5:1、超高):
1. 用最接近的支持档位生成(16:9、21:9 或 9:16)
2. 用 Photoshop / Pixelmator / Photopea(免费、浏览器里跑)打开
3. 裁到精确的目标比例
4. 需要的话再 outpaint 或放大回目标尺寸
Prompt 里给主体留大约 10% 的余量,裁的时候才不会切到它。
Step 3:查模型的支持比例列表(2026 年 6 月)
Midjourney v7/v8: 1:1,--ar 最宽到 4:1(最高到 1:4);
极端比例标注为实验性
gpt-image-1(ChatGPT):只有 1024x1024、1024x1536、1536x1024
Gemini 3.1 Flash Image(Nano Banana 2):1:1、16:9、9:16、4:3、3:4、
3:2、2:3、5:4、4:5、21:9
SDXL / SD 3.5: 任意比例,~1 兆像素,两边能被 64 整除
Flux: 任意比例,尺寸能被 16 整除,~0.2-2 兆像素,单边最小 1024
注意:Google 较老的 Imagen 模型已弃用,计划于 2026 年 8 月 17 日关停;如果在 Gemini 侧请求一直返回 1:1,你可能走的是老 Imagen 路径。把比例说清楚再重新 prompt,或通过 API 用 aspect_ratio 字段。
Step 4:在本地工具里覆盖 UI 默认
在 ComfyUI / A1111 / Forge 里,数值字段盖过 prompt:
- 把 Width / Height 字段设成你的目标;别指望 prompt 里的文字
- A1111/Forge 里还要查 Hires fix -> 它的目标分辨率会重新强加一个比例
- ComfyUI 里确认 EmptyLatentImage 节点,不只是 prompt
- 冲突时 UI 字段赢
Step 5:把像素数学算清楚
# 把 宽:高 约分到最简
from math import gcd
def aspect(w, h):
g = gcd(w, h)
return f"{w//g}:{h//g}"
aspect(1024, 1536) # -> "2:3" (gpt-image-1 竖屏)
aspect(768, 1344) # -> "4:7" (SDXL 竖屏档位,不是精确 9:16)
aspect(1080, 1920) # -> "9:16" (精确)
要精确 9:16 用 1080x1920(或 576x1024)。要精确 16:9 用 1920x1080。在 SDXL/Flux 上,贴到满足整除规则的最近档位。
Step 6:确认导出文件的真实长宽比
下载原始 PNG,查它真实的尺寸:Finder 里”显示简介”、资源管理器里”属性”,或命令行 identify image.png(ImageMagick)/ macOS 上 sips -g pixelWidth -g pixelHeight image.png。如果文件尺寸和你生成的不一样,说明导出或预览环节在重新裁切。下载原图而不是预览版,绕开它。
怎么确认修好了
- 用改正后的控件生成一张测试图。
- 把导出的文件丢进 Step 5 的
aspect()(或任何看图片信息的工具),确认约分后的比例和目标一致。 - 走一遍你真正的导出流程(上传 Reels、社交卡片等)再查一次——裁切可能在导出时又冒出来(原因 6)。
常见问题
为什么 ChatGPT 不管我怎么问都给方图?
gpt-image-1 只有三种输出尺寸:1024x1024、1024x1536、1536x1024。没有自定义比例。明确要”竖屏 9:16”或”宽屏 16:9”,让它选到竖版或横版预设;其它任何说法都默认方图。
为什么 Midjourney 拒绝我的 --ar 1.85:1?
--ar flag 不接受小数。换成整数比,比如 1.85:1 写成 --ar 37:20,1.39:1 写成 --ar 139:100。
Gemini 无视 “16:9” 一直 1:1,变了什么?
Gemini 当前的图像模型(Nano Banana 2 / Gemini 3.1 Flash Image)确实支持 16:9 和另外九种比例,但一句话请求有时会被漏掉,或者你走了已弃用的 Imagen 路径。把比例放在请求开头说清楚,或通过 API 设 aspect_ratio="16:9"。
为什么 768x1344 不是精确 9:16?
768/1344 约分是 4:7(0.571),不是 9:16(0.5625)。768x1344 是 SDXL 最接近竖屏的 ~1 兆像素训练档位。要交付精确 9:16,先按档位生成再裁,或在能自由设尺寸的模型上用 1080x1920。
本地 UI 完全无视 prompt 里的比例,为什么? 在 ComfyUI、A1111、Forge 里,数值 Width/Height 字段会覆盖 prompt 里的任何比例文字。在字段里设尺寸(Step 4),别写在 prompt 里。
预防建议
- 给每个平台存一份速查表:Midjourney
--ar语法、ChatGPT 的 3 种尺寸、Gemini 的 10 种比例、SDXL/Flux 的像素档位。 - 做系列时先锁定一个比例,绝不混用。
- 优先”稍大生成再裁”,而不是”极端比例 + 期望模型听话”。
- 用
aspect()验证像素尺寸真的是目标比例,别目测。