制作 GIF 动画,不一定要先调用 AI 视频模型。另一种方法是:让图片模型生成一张精灵图,把其中的画面拆成独立帧,再按顺序播放。

图片模型负责绘制,后续处理负责把画面组装成动画文件。对使用者来说,整个流程可以简化为输入“小猫挥手”,然后得到一段 GIF。

关键在于,模型并不一定直接输出动态文件。它也可以先生成一张包含同一动作多个时刻的静态图片。

GPT Image 2.6 在这个流程中负责什么?

在提供 GPT Image 2.6 的工具中,你可以尝试这个方法:先要求模型输出一张包含连续动作帧的静态精灵图,检查网格,再按下文步骤拆帧和编码。OpenAI 也为 GPT Image 2.6 提供了原生 GIF 输出能力;本文讲解的是手动精灵图路线,适合希望检查每个姿态、控制组装过程的创作者。不同工具开放的输出选项可能不同。参见 OpenAI 官方图像生成指南。

SugarCube 可用性:当前已开放 GPT Image 2.6 Economy,分辨率为 1K。按照本文手动工作流,可以先在 Studio 生成 PNG 精灵图,检查后再拆帧组装。想直接输出 GIF,请打开文字转 GIF 生成器,输入动画描述,不添加参考图。PNG 编辑最多支持 16 张参考图;SVG、markup、complexity 和帧时序控件尚未开放。

示例说明:下文两段动画均为所提供的 AI 生成素材,但没有记录底层模型版本。它们用于展示帧顺序、播放时长和可见的循环重启,不作为 GPT Image 2.6 的实测结果。

先看一个实际动画示例:

虎斑幼猫拍打红色毛线球,随后露出不同表情的动画

示例共九帧,尺寸为 478 × 358 像素,每帧 160 毫秒,一轮播放为 1.44 秒。文件设置为无限重复;重新开始时有可见跳变,并非完全无缝。页面默认展示静帧,点击播放按钮后才播放。

下面会解释方法原理,提供可复制的精灵图提示词,并说明导出 GIF 前需要检查什么。

什么是精灵图?

精灵图(sprite sheet)是一张包含多幅小图的图片。这些小图可以是图标、角色姿态,也可以是动画帧。MDN 的图片精灵说明介绍了将多个图像合并到一个文件中的方式。[1]

用于动画时,每个格子应描绘同一动作的不同阶段。可以把它想成翻页书:第一帧中爪子放着,下一帧抬起,再下一帧向侧面移动。

常见起点是三行三列,共九帧。按从左到右、从上到下的顺序读取:

第 1 帧 → 第 2 帧 → 第 3 帧
第 4 帧 → 第 5 帧 → 第 6 帧
第 7 帧 → 第 8 帧 → 第 9 帧

将幼猫动画的九个连续画面按三行三列排列的动作示意图查看完整尺寸图片

这是由上方 GIF 的实际解码帧重排而成的示意图,顺序与动画一致。它不是未经处理的原始模型精灵图。

动画精灵图与拼贴图的区别在于连续性。九张互不相关的猫咪图片只会变成幻灯片;同一只猫的九个连续姿态,才可能形成一个动作。

AI GIF 生成器怎样使用精灵图?

整个流程可以分成四个阶段:

用户的动画想法
      ↓
动作说明与网格要求
      ↓
AI 生成精灵图
      ↓
裁出各帧 → 设置时长 → 编码 GIF

例如,用户只输入:

一只开心的小猫挥手打招呼。

应用可以补充网格布局、角色外观、镜头固定方式和逐帧动作变化的要求,让模型尝试在同一张图片中画出完整序列。

随后,图片处理工具裁出每个格子,GIF 编码器保存各帧及其播放时长、重复设置。Sharp 提供矩形裁切与缩放;FFmpeg 提供 GIF 编码和调色板处理工具。[2][3][4]

AI 负责视觉内容,普通软件负责动画组装。

这与先生成视频、再转成 GIF 的路线不同。两种方法都可以得到 .gif 文件,但素材来源和质量约束不同。精灵图路线尤其依赖有限姿态之间的连续性,以及网格的准确程度。

分步制作 AI GIF

1. 打开 GPT Image 2.6,选择一个简单动作

在 SugarCube,打开 GPT Image 2.6 Economy Studio,为这次精灵图练习保持 PNG 输出。分辨率固定为 1K;本文的拆帧与编码仍需另外完成。

先选一个能用少量姿态表达清楚的动作,例如挥手、眨眼、轻轻弹跳或小幅左右摆动。

目标越集中,需要模型协调的变化就越少:

一个小橙色机器人眨动屏幕上的眼睛,轻轻歪头,镜头固定,背景简洁。

对比下面这个想法:

机器人穿过城市,跳上行驶中的公交车,变成一条龙,再从镜头前飞走。

后者包含多个动作、场景和视角变化。对于九帧实验,应该先简化想法,再考虑增加帧数。

一个好用的起步公式是:

[主体] + [一个动作] + [视觉风格] + [简单场景]

面向用户的描述可以很短。详细动画要求可以由工具模板补充,也可以与描述一起粘贴进图片生成器。

2. 添加可复用的精灵图提示词

下面是一份方形九帧动画模板。复制前,将花括号中的内容替换成你的想法:

Create ONE animation sprite sheet containing exactly nine sequential
frames in a precise 3-row by 3-column layout.

Animation idea:
{Describe the subject, one action, visual style, and setting.}

Layout:
- Use nine equally sized square cells.
- Fill the entire square image with this 3×3 layout.
- Arrange time from left to right, then top to bottom.
- Do not draw grid lines, borders, margins, gaps, labels, or numbers.
- Do not place a separate hero image outside the grid.

Consistency:
- Keep the same character, proportions, clothing, colors, and props.
- Keep the camera, framing, background, and lighting fixed.
- Keep the entire moving subject inside its own cell.
- Leave enough room around the subject for the complete movement.

Motion:
- Show one small action progressing across all nine frames.
- Use modest pose changes between neighboring frames.
- Keep stationary parts of the scene in the same positions.
- Do not repeat the same still image nine times.

Loop:
- Design the movement as one repeating cycle.
- Make the transition from frame nine back to frame one a small,
  natural continuation of the movement.
- Avoid duplicating the first pose as an unnecessary extra end hold.

Return only the sprite-sheet image.

针对挥手的小猫,还可以加上更明确的动作要求:

小猫的右前爪始终抬起,用同一只爪子轻轻左右挥动。另一只前爪、头部和躯干基本不动。从一轮重复挥手中,均匀选取九个时刻。

这比“让它动起来”更具体:说明了哪些部分变化、哪些保持静止,以及由哪只爪子执行动作。

在产品中,可以将这些要求作为复用模板管理。并非所有图片 API 都有独立的系统消息字段;开发时可能需要把模板和用户描述合并到接口支持的提示词字段中。关键是指令结构,而非字段名称。

3. 转换前先检查网格

看到九个画面,不代表它已经能做成动画。先确认格子等大、动作按预期顺序推进、角色外观保持一致。

尤其注意边缘。爪子跨进相邻格子,拆帧后就会被切断;白色装饰边框可能在播放时闪烁;额外文字也可能被裁进某一帧。

精准裁切修不好画错的网格。它也不能消除变脸、多余肢体或道具突然消失等绘制问题。

初次尝试时,先放大检查整张精灵图,再花时间调整导出参数。遇到无法使用的图,应该重新生成,而不是靠加快播放掩盖问题。

4. 将精灵图拆成独立帧

一张网格准确的 1536 × 1536 图片,分成三行三列后,每格为 512 × 512 像素;768 × 768 的图片则每格为 256 × 256。计算方式就是宽、高分别除以三。

使用图片编辑器、精灵图拆分工具或服务端图片处理库,按行顺序提取格子。Sharp 的 extract 可以裁出矩形区域,再用 resize 统一输出尺寸。[2]

如果图片宽高不能被三整除,不要反复使用一个取整后的固定格宽,而要计算共享边界:

left   = floor(column × image_width / 3)
right  = floor((column + 1) × image_width / 3)

top    = floor(row × image_height / 3)
bottom = floor((row + 1) × image_height / 3)

其中 column 和 row 都从 0 到 2。每次从当前左、上边界裁到下一个右、下边界,便能覆盖全部源像素;这仍然无法修正模型画偏的格子。

拆帧后,将各帧统一为相同输出尺寸,并保留原始比例。把横向画面直接拉成正方形,会改变角色外形。应明确选择裁切或补边。

5. 设置速度并编码 GIF

播放时长决定每个姿态停留多久。各帧时长相同时:

一轮播放时长 = 帧数 × 每帧时长

九帧、每帧 160 毫秒,一轮就是 1.44 秒。九帧按名义上每秒六帧播放,一轮约为 1.5 秒。

下面是面向开发者的 FFmpeg 示例,假设已经在 frames 目录准备好九张同尺寸 PNG,名称为 frame_000.png 到 frame_008.png:

ffmpeg -y \
  -framerate 6 \
  -start_number 0 \
  -i frames/frame_%03d.png \
  -filter_complex "[0:v]split[a][b];[a]palettegen[p];[b][p]paletteuse" \
  -loop 0 \
  output.gif

palettegen 和 paletteuse 分别生成和应用调色板,GIF 输出选项 -loop 0 表示无限重复。[3][4]

重复播放设置不会让动作自动无缝。它只会在最后一帧之后重新开始。如果结尾姿态与开头差异太大,跳变仍然可见。

如果工具已经提供拆帧和 GIF 导出,就不必使用命令行。这里给出命令,是为了说明通常隐藏在界面之后的组装过程。

6. 检查整段动画,而非只看第一帧

连续播放几轮,观察主体轮廓、静止物体,以及回到开头时的衔接。

还要在实际展示尺寸下确认动作是否清晰。一个小表情图未必需要写实运动;产品演示则可能需要更高的连续性。

调整速度可以帮助找到易读的节奏,但不会补出缺失姿态。如果爪子从抬起直接跳到放下,播放再快,中间动作也依然不存在。

真实示例:哪些有效,哪些还需要改进?

本文提供的是实际动画文件,并非带 GIF 标签的静态图片。两段动画均为九帧、478 × 358 像素,展示的是方法和局限,不保证每次生成都能得到成熟动画。页面使用保留原始帧与时长的动画 WebP 展示,默认静止,可手动播放和暂停。

小猫玩毛线球

开头的例子只有一个主要角色和一个明显动作:小猫伸爪拨动毛线球,然后改变表情。

它的局限也很直观:毛线球滚向画面边缘,重播时会回到原位。这是一段重复片段,循环接点仍然看得出来。

想让循环更自然,可以换成能回到起点的运动,例如小猫轻拍悬挂玩具,让玩具来回摆动,而不是把毛线球推远。

猫咪厨师翻煎饼

穿厨师服的橘白猫用平底锅抛起煎饼的动画

九帧,478 × 358 像素,每帧 150 毫秒,一轮播放为 1.35 秒。

这个例子增加了移动道具:厨师抬锅、煎饼升起,再落向锅里。大致动作能够辨认,但飞行轨迹和最后的庆祝姿态带来了更多不连续的可能。

猫咪厨师翻煎饼动画的九个实际帧,按三行三列排列查看完整尺寸图片

示意图由动画的解码帧重排而成,便于逐格观察煎饼位置和猫咪姿态的变化。

这里的经验是:看起来简单的要求,也可能包含多个独立运动部件。先完成一个小动作,再逐步添加道具和手势。

第一次制作精灵图 GIF 的起步设置

下面是建议的试验起点,并非所有模型的最佳配置。

设置 建议起点 原因
网格 三行三列 序列紧凑,便于检查
帧数 9 适合第一次尝试小幅动作
单帧形状 正方形 便于制作独立小图
输出尺寸 256 × 256 先用适中尺寸试验,再考虑更大输出
播放速度 约每秒六帧 预览后再调整节奏
背景 简单或大部分静止 容易发现不该出现的变化
镜头 固定 避免增加镜头运动的复杂度

上面的两段横向示例保留了原始比例,时长也略有不同。表格用于新的试验,不是在描述示例文件参数。

分辨率同样需要提前规划。1536 × 1536 的图片分成九宫格,每格是 512 × 512。若源格子很小,再导出为 512 像素只是放大,不会凭空增加细节。

增加格子数量也有相同取舍:整图分辨率固定时,四行四列的每一帧,会比三行三列获得更少像素。

四个可以尝试的动画提示词

将下面的创意填入前面的完整模板。它们是新的起步提示词,并非本文两段示例的原始生成记录。

挥手动物贴纸

一只圆润的橙色小猫,戴红色项圈,坐在纯奶油色背景前。右前爪保持抬起,轻轻左右挥手。另一只爪子、身体和镜头保持不动。柔和黏土动画风格,居中构图,重复动作。

弹跳角色

一个淡紫色的小果冻生物,在简单背景前原地轻轻弹跳。接近地面时身体压缩,上升时稍微伸长。眼睛和笑容保持一致。角色始终居中,完成一轮可重复的弹跳。

眨眼机器人

一个友好的小机器人,白色圆润机身,蓝色屏幕眼睛。眼睛逐渐眯起、闭合,再重新睁开。机身、头部位置、背景和镜头完全固定。一次轻微眨眼,清楚回到初始表情。

漂浮咖啡杯

一只插画咖啡杯,在静止碟子上方轻轻上下浮动。杯身和把手形状不变。纯粉彩背景,固定镜头,一轮缓慢重复的垂直运动。没有飞溅、场景切换或额外物品。

这些提示词有意限制运动范围。初次成功后,再一次只增加一个变化,例如更复杂的背景或第二个动作。

常见问题与改进办法

问题 检查什么 下一步怎么改
GIF 像幻灯片 各格姿态或场景是否缺少关联 要求更小的相邻姿态变化和同一连续动作
角色抖动或漂移 身体位置或构图是否逐格改变 固定镜头,并说明哪些部位保持静止
播放时边框闪烁 裁切是否包含格线或留白 要求重新生成无边框图,或移除已知且一致的边距
播放加快却仍然跳跃 相邻姿态之间动作是否过大 缩小动作范围,不要只依靠速度
循环重启明显 最后与第一帧的姿态、物体位置是否差异太大 把动作设计成周期,并检查首尾衔接
方形导出后角色变形 是否直接拉伸了非方形画面 明确选择裁切或补边
所有帧几乎一样 模型是否画了重复姿态 描述可见的中间阶段,而不只是动作名称

不要为了隐藏跳变而自动倒放所有序列。正放再倒放适合轻轻起伏、摆动,但倒放倾倒、咬一口或单向飞行,会改变动作含义。

常见问答

不使用 AI 视频模型,GPT Image 2.6 也能制作 GIF 吗?

可以。SugarCube 的 GIF 生成器使用 GPT Image 2.6 Economy 将文字生成 1K GIF,不需要视频模型。本文使用另一条路线:先生成 PNG 动画精灵图,再提取各帧并编码 GIF。图像生成和动画组装是两个阶段;动作是否可信,取决于序列本身,而非文件能否打开。

精灵图本身已经是动画了吗?

不是。它仍是一张包含多幅小图的静态图片。按顺序逐张显示这些小图时,才会产生运动。精灵图是源素材,GIF 是可能的播放格式之一。[1][4]

需要自己写完整技术提示词吗?

如果应用已经提供模板,就不需要。用户可以输入普通描述,由后台补充网格、一致性和动作要求。直接使用图片生成器时,则可以粘贴完整模板,替换其中的动画创意。

可以从已有角色图片开始吗?

制作 PNG 精灵图时,SugarCube 的 Economy 最多支持 16 张参考图。可以让它保留角色外观并绘制动作序列,再手动组装 PNG。SugarCube 的直接 GIF 输出不支持参考图。把普通肖像切成九块,并不会让它动起来。

这种方法一定比生成视频便宜吗?

不一定。虽然省去了视频生成步骤,总成本仍取决于图片模型定价、分辨率、重试次数、处理和存储。应该比较每个可用结果的成本,而非假设一次图片请求永远更便宜。

制作 AI GIF 免费吗?

取决于使用的工具。组装动画与 AI 生图可能采用不同收费方式。SugarCube 的图片生成器会按模型和设置显示积分报价,应以当前报价为准,不要把本文理解为无限免费生成。[5]

可以用这个方法开发文字生成 GIF 功能吗?

可以。产品可以接收短提示词、套用动画模板、请求精灵图,再裁切并校验各帧,最后编码和保存 GIF。用户不一定需要看到中间精灵图。建议保留中间图用于排查,因为成功编码并不代表画面没有问题。

从一个小动作开始,逐步改善序列

精灵图方法很直观:一个想法变成几个相关的静态画面,再由这些画面组成动画。

第一次实验,选择单个角色、一个可重复的小动作、固定镜头和不变的背景。编码前先检查精灵图,完成后连续播放几轮,检查节奏和首尾衔接。

想先制作图稿,可以打开 GPT Image 2.6 Economy Studio,使用 PNG 输出和完整精灵图模板。检查网格后,再用本文的拆帧和编码步骤组装 GIF。想直接把文字生成 GIF,则使用 GIF 生成器。两个入口都会在生成前显示积分报价。[5]

需要优化图稿描述,可以阅读如何写出更好的图片提示词;想提高角色连续性,可以参考如何构建一致的视觉故事。

技术参考

[1] MDN:实现图片精灵——将多个图片组合进同一精灵图文件的基础说明。

[2] Sharp:图片缩放与裁切——矩形裁切与输出尺寸处理。

[3] FFmpeg:palettegen 与 paletteuse——GIF 编码中的调色板生成与应用。

[4] FFmpeg:GIF 输出格式——GIF 输出选项与重复播放设置。

[5] SugarCube:GPT Image 2.6 Economy与 GIF 生成器——PNG 生成、编辑和文字转 GIF 入口,均显示积分报价。

[6] OpenAI:图像生成——GPT Image 2.6 的能力说明;指南内既有 API 示例可能使用更早模型。