AI 图片长宽比不对:9:16 出成 1:1 怎么修(分平台)

设了 9:16 却出方图?分平台讲清楚长宽比语法、支持比例列表和 UI 覆盖陷阱——Midjourney、ChatGPT、Gemini、SDXL、Flux,2026 年 6 月核对。

你要一张 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,输出 1024x1024UI 的 Width/Height 覆盖了 promptStep 4
9:16 出 1:1 但 2:3 正常极端比例不在模型支持集里Step 2 + Step 3
像素看着对,但比例算错了你把 768x1344 当成 9:16Step 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 日退役后的替代品)只输出 1024x10241024x1536(竖)或 1536x1024(横)。没有连续的比例控制,也没有 --ar flag。

如何判断: 文档或尺寸下拉框只列出两三个固定尺寸。

3. UI 默认值覆盖了 prompt

你在 prompt 里写了 16:9,但 UI 的 Width/Height(或分辨率下拉框)设的是方图。在 ComfyUI、A1111、Forge 里,明确的数值字段永远盖过 prompt 里的文字。

如何判断: UI 分辨率字段和你用文字要求的不一致。

4. 模型不支持这个极端比例

非常宽或非常高的比例(32:91: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:95: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。如果文件尺寸和你生成的不一样,说明导出或预览环节在重新裁切。下载原图而不是预览版,绕开它。

怎么确认修好了

  1. 用改正后的控件生成一张测试图。
  2. 把导出的文件丢进 Step 5 的 aspect()(或任何看图片信息的工具),确认约分后的比例和目标一致。
  3. 走一遍你真正的导出流程(上传 Reels、社交卡片等)再查一次——裁切可能在导出时又冒出来(原因 6)。

常见问题

为什么 ChatGPT 不管我怎么问都给方图? gpt-image-1 只有三种输出尺寸:1024x10241024x15361536x1024。没有自定义比例。明确要”竖屏 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() 验证像素尺寸真的是目标比例,别目测。

相关阅读

标签: #图像生成 #排查 #排查