BGZero
自动擦除手动去除批量处理
游戏素材
教程
EN中文
登录
BG ZERO
所有图片处理均在您的浏览器本地完成 · 不上传任何数据 · 100% 隐私安全
工具更换图片背景颜色商品图白底生成器证件照背景更换护照照片背景更换工具WebP 背景去除工具透明 PNG 生成器批量背景去除
游戏素材工具GIF 转 Sprite SheetSprite Sheet 合图Sprite Sheet 切割像素画无损放大图片转像素画
BGZero

AI 驱动的背景去除工具
纯浏览器本地运算,零数据上传

开源许可

  • 默认引擎AGPL-3.0
  • Transformers.jsCC BY-NC 4.0
  • rembg-webMIT
隐私政策服务条款开源许可无障碍声明DMCA联系我们源代码 (AGPL-3.0)举报滥用
© 2026 BG Zero. 基于 AGPL-3.0 协议发布。粤ICP备2026016654号-2用心打造 · 本地优先
← 返回教程列表
GIF 转 Sprite Sheet发布于 2026/8/16更新于 2026/8/16阅读约 9 分钟

如何把 GIF 转换成 Sprite Sheet

从 GIF 帧解码、网格布局到透明 PNG 导出,完整说明如何制作可被游戏引擎可靠切片的 Sprite Sheet。

动态 GIF 很适合展示循环动画,但大多数游戏引擎不会直接把 GIF 当作逐帧角色动画使用。更常见、也更可控的格式是 Sprite Sheet:把所有动画帧按固定网格排列在一张 PNG 图片中,再由引擎按单元格切片和播放。

这个过程并不是简单截图。GIF 可能只保存“相对于上一帧发生变化的矩形”,还会用 disposal(帧处置方式)决定下一帧之前保留、清空还是恢复画面。可靠的转换器必须先还原每一帧真正可见的完整画面,再把它们排进网格。

下面会从源文件检查、列数和间距设置、长动画抽帧,一直讲到 Unity 与 Godot 中的验证方法。

快速开始 已有动态 GIF 时,打开转换器,选择列数、间距和背景,确认预计输出尺寸后生成 PNG。整个解码和导出过程都在浏览器本地完成。

GIF 与 Sprite Sheet 保存的信息不同

两种格式都能表达一组连续画面,但用途并不相同。

信息动态 GIFPNG Sprite Sheet
画面内部保存动画帧把帧排列在一张画布上
每帧时长可以保存PNG 中不保存
循环次数可以保存由游戏引擎控制
透明度支持,但受 GIF 格式限制使用 PNG Alpha 透明度
布局播放时不可见行列网格清晰可见

六个 GIF 动画帧按三列两行排列成 Sprite Sheet

转换后的图片会保留所选帧的视觉顺序,但不会携带原 GIF 的帧延迟和循环设置。如果原动画每帧时长不同,最好在转换前记录时间;导入引擎后再决定使用统一 FPS,还是通过重复帧或单独设置时长还原节奏。

转换前先检查源 GIF

优先使用质量最高的源文件。聊天软件或网页中的预览 GIF 可能已经缩小尺寸、压缩颜色并损失边缘细节。如果你同时拥有原始 PNG 帧,直接使用 Sprite Sheet Maker 会更合适,因为不需要重新解码经过压缩的 GIF。

转换前确认以下几点:

  1. 文件确实包含至少两帧,而不是扩展名为 GIF 的静态图。
  2. GIF 画布尺寸就是你希望每个 Sprite 单元格使用的尺寸。
  3. 需要透明背景时,源文件本身已经带透明区域。
  4. 帧数和最终纹理尺寸适合放在同一张图中。

工具首期支持最大 25MB、最多 300 帧的动态 GIF,同时还会检查解码内存、总像素和输出尺寸。压缩文件很小不代表解码成本低:一段 2000×2000 像素、包含许多帧的 GIF,展开后会占用远高于文件体积的内存。

第一步:上传并正确还原完整帧

打开 GIF 转 Sprite Sheet 工具,选择本地 GIF。源文件不需要进入远端处理队列,解码在当前浏览器中完成。

GIF 的后续帧可能只包含一小块变化区域。例如角色只移动了手臂,文件就可能保存手臂附近的矩形,而不是重新保存整张画面。处置方式还可能要求在下一帧开始前保留上一帧、恢复背景或恢复到更早状态。如果把这些局部矩形直接当作完整帧导出,就会出现透明缺口、残影或上一帧像素没有被清除的问题。

工具会按照帧顺序进行合成,得到与正常 GIF 播放器中相同的完整画面。如果上传后提示超限,先检查帧数和像素尺寸,删除无用的停顿帧或回到源文件缩小画布,比强行处理过大的文件更稳妥。

第二步:选择便于切片的列数

列数决定多少帧以后换到下一行。例如 24 帧设置为 6 列,会得到 4 行;设置为 8 列,则得到 3 行。无论采用哪种布局,帧顺序都按照从左到右、再从上到下排列。

可以按这些原则选择:

  • 帧数很少、引擎偏好横向动画条时使用单行。
  • 想避免图片极宽或极高时,使用接近方形的网格。
  • 希望每一行都填满时,选择能够整除帧数的列数。
  • Idle、Run、Attack 等动作相互独立时,最好分别保存为不同 Sheet。

不要只看网格是否整齐,还要计算最终尺寸。假设每帧为 256×256,10 列在不含间距时已经达到 2560 像素宽。工具会展示预计生成尺寸;当任意方向超过 8192 像素时,会说明内存和兼容性风险并让你确认是否继续。即使浏览器允许生成,也不等于目标设备或游戏引擎适合加载这么大的纹理。

第三步:设置 Padding 和背景

Padding 会在画布外缘和单元格之间加入空白。设置为 0 可以得到最紧凑的网格;设置少量间距可以让人工检查更直观,但后续切片时必须使用相同数值,否则坐标会逐列偏移。

像素画通常可以从 0 开始。如果游戏引擎启用了线性过滤或 Mipmap,真正用于防止相邻纹理采样污染的往往是“边缘像素扩展”,而不是透明空白;当前转换器不会生成挤出的边缘像素,需要在专门的纹理打包流程中处理,或在引擎中关闭不合适的过滤设置。

Sprite 需要透明背景时选择透明画布。实体色背景会永久写入帧周围,只适合本来就需要该颜色的素材。如果 GIF 自身带有要删除的纯色背景,转换不会自动识别并去除它;应在拆帧之后使用背景去除流程,并检查边缘是否需要手动精修。

第四步:长动画按需抽帧

“每隔 N 帧保留一帧”可以减少输出帧数。60 帧动画每 2 帧保留一次会得到约 30 帧;每 3 帧保留一次会得到约 20 帧。

抽帧适合把参考动画压缩成更轻的序列,但它会改变动作。快速攻击可能丢失接触帧,循环动画也可能在首尾产生明显跳变。生成后应与原 GIF 对照;如果预备动作、关键姿势或收势消失,就降低抽帧间隔,或回到原始序列手动选择帧。

还要注意:减少一半帧数不会自动修改播放时间。如果仍使用原来的单帧时长,动画总时长会缩短。想大致保持原速度,需要在引擎中相应延长剩余帧的显示时间。

第五步:生成后检查 PNG

点击生成后,先看预览再下载。重点检查:

  • 第一帧和最后一帧是否符合预期。
  • 是否存在上一帧没有清除的残影。
  • 透明区域是否显示为棋盘格,而不是被填入实体颜色。
  • 每个单元格的宽高是否完全一致。
  • 外缘与帧间距是否保持一致。
  • 页面预计尺寸是否与下载 PNG 的实际尺寸一致。

检查像素画时应使用最近邻方式放大。浏览器平滑缩放可能让正确的像素看起来模糊;反过来,棋盘格也可能掩盖很淡的半透明杂边,最好再把结果分别放到浅色和深色背景上查看。

PNG 下载完成后,暂时保留原 GIF。Sprite Sheet 本身无法告诉你原始帧延迟,必须等引擎中的动画节奏验证通过后再清理中间文件。

导入 Unity 或 Godot

在 Unity 中,把 PNG 作为 Sprite 纹理导入并选择多 Sprite 工作流,然后按转换时的单元格宽高、Offset 与 Padding 精确切片。像素画应关闭会产生模糊的过滤,避免有损纹理压缩,并根据项目比例设置 Pixels Per Unit。

在 Godot 中,可以使用 Sprite2D 或 AnimatedSprite2D 的规则网格功能,设置实际横向帧数和纵向帧数,再按顺序建立动画。最后一行没有填满时,不要把空白单元格加入播放列表。

其他引擎可能把同一组参数称作 frame width、tile size、region 或 atlas grid,本质计算一致:第一帧从外缘 Padding 后开始,横向步长是帧宽加间距,纵向步长是帧高加间距。

故障排查与修复方法

Sprite Sheet 中出现残影

通常与 GIF 的 disposal 处理有关。先确认源文件在正常 GIF 播放器中显示正确;如果只有导出 Sheet 出错,应使用能够合成局部帧和处置方式的转换器,而不是抽取原始矩形数据。

输出宽度或高度超过 8192 像素

减少列数可以降低宽度,增加列数可以减少高度;也可以抽取更少帧、缩小源动画,或把不同动作拆成多个 Sheet。继续生成只是一个选项,移动设备和部分 GPU 的纹理限制与内存成本往往更值得优先考虑。

透明边缘出现彩色光圈

GIF 颜色数量和透明机制有限,源文件可能已经带有底色污染。把结果叠加到游戏真实背景上检查;如果光圈来自源文件,需要拆帧后清理边缘,或回到全彩原始 PNG。

导入后速度不对

PNG 不保存帧时长。请在引擎中设置 FPS 或每帧持续时间;原 GIF 使用不等时延迟时,应提前记录并在引擎中近似还原。

建立可重复的素材流程

单个动作可以按“转换—检查—导入—测试循环”的顺序完成。大型角色素材则应统一每帧尺寸和命名,把 Idle、Run、Attack、Hit 分文件保存,并在源文件旁记录目标 FPS。

之后若需要独立 PNG,可用 Sprite Sheet Cutter 按相同网格拆分;需要调整顺序时,先拆帧再用 Maker 重建。所有入口可以从 游戏素材工具中心 找到。

把 GIF 转换成 Sprite Sheet

常见问题

Sprite Sheet 会保留 GIF 的播放速度吗?

不会。PNG 只保存像素,不保存帧延迟和循环设置。请在游戏引擎中重新配置时间,并记录源 GIF 的不等时延迟。

透明 GIF 可以转换吗?

可以,透明区域会保留为 PNG Alpha。仍需检查边缘,因为 GIF 原有的颜色和透明限制可能已经产生杂边。

为什么有些工具抽出的 GIF 帧不完整?

部分 GIF 只保存变化矩形,并依赖前一帧和 disposal 指令。可靠的转换器需要先合成完整可见画面。

Sprite Sheet 应该设置多少列?

选择能让最终纹理尺寸合理、并能被引擎稳定切片的列数。列数可以整除帧数时网格更整齐,但不是强制要求。

这里能把 Sprite Sheet 转回 GIF 吗?

当前工具只支持 GIF 转 PNG Sprite Sheet,不提供反向转换,也不会在 PNG 中写入时间信息。

相关指南

Sprite Sheet 拆分如何把 Sprite Sheet 拆分成独立帧多张图片合成 Sprite Sheet如何把多张图片合成 Sprite Sheet像素画无损放大如何放大像素画而不模糊
← 返回教程列表