GIF 有多少帧?
GIF 为每一帧记录一个以百分之一秒为单位的延迟,所以帧数大约等于动画时长除以这个延迟。每秒 10 帧(延迟 10/100 秒)的 1 秒循环有 10 帧;同样 1 秒、每秒 25 帧(4/100 秒)就有 25 帧。
最容易超出预期的是录屏和从视频里截出来的片段:6 秒、每秒 25 帧就已经是 150 帧。游戏动画要短得多——行走循环通常 4 到 12 帧,攻击 3 到 8 帧。
GIF 解码完成后,每一帧和它原本的时长都会显示出来,导出之前就知道手里有什么。
上传 GIF,自动拆帧,下载一张精灵图 PNG。可以预览动画、选列数和间距 —— 全程在浏览器里跑,文件不上传。
选择动态 GIF,在本地提取每一帧。
选择动态 GIF,在本地提取每一帧。
免费 · 本地处理 · 无需登录
选择设备上的 GIF,或点击示例直接体验真实转换。
预览拆出的动画,调整列数和间距,确定图集排列方式。
保存包含全部拆分帧的 PNG。图集本身是静态图片,工具中可查看播放时序。
GIF 把帧和节奏一起打包;精灵图把同样这些帧摆在固定网格上 —— 那才是游戏引擎会切的形状。解码和排版这两件事,这个工具在你的浏览器里做完。
每一帧
按原顺序读出来,只更新局部的帧也不漏。
原始像素
不缩放、不重采样。64 × 64 的 GIF 出 64 × 64 的格子。
你的节奏
每帧的原始间隔就标在旁边,照着它在代码里还原。
这个转换器吃什么、吐什么,全是数字。
| GIF 转精灵图 | |
|---|---|
| [R01] 输入 | 动图 GIF |
| [R02] 单文件上限 | 12 MB |
| [R03] 帧数上限 | 160 |
| [R04] 单帧像素上限 | 2,000,000 |
| [R05] 帧顺序 | 按原顺序,含局部更新帧 |
| [R06] 列数 | 自动 / 1 / 2 / 4 / 8 |
| [R07] 间距 | 0 / 1 / 2 / 4 px |
| [R08] 输出 | PNG,原始像素,不缩放 |
| [R09] 运行位置 | 你的浏览器,文件不上传 |
转换之前值得知道两件事:一个 GIF 到底有多少帧,以及拿到精灵图之后能用来做什么。
GIF 为每一帧记录一个以百分之一秒为单位的延迟,所以帧数大约等于动画时长除以这个延迟。每秒 10 帧(延迟 10/100 秒)的 1 秒循环有 10 帧;同样 1 秒、每秒 25 帧(4/100 秒)就有 25 帧。
最容易超出预期的是录屏和从视频里截出来的片段:6 秒、每秒 25 帧就已经是 150 帧。游戏动画要短得多——行走循环通常 4 到 12 帧,攻击 3 到 8 帧。
GIF 解码完成后,每一帧和它原本的时长都会显示出来,导出之前就知道手里有什么。
转换器支持单个文件最大 12 MB、最多 160 帧、每帧最多 200 万像素——1920×1040 可以,完整的 1920×1080 不行。所有帧加起来的总像素上限约 2500 万,相当于 400×400 的 150 帧。每一帧都要在浏览器内存里解码,所以有这些限制。
超出限制时,先在 GIF 编辑器里剪短或缩小——宽高各减半,像素数就只剩四分之一。加载成功后删掉用不到的帧:只保留动画实际用到的帧,精灵图更小,切图也更容易。
大家转换 GIF 通常是为了:
转之前开发者最常问的几件事。
它把动图 GIF 解码成一帧一帧,再排到一张 PNG 网格里 —— 这是游戏引擎能读的格式。同一段动画,从 GIF 变成精灵图。
动图 GIF 都能解码,帧按原顺序读出,含只更新局部的帧。文件特别大时浏览器内存仍可能不够。
单个文件 12 MB、最多 160 帧。超了浏览器解不完每一帧,先把 GIF 导小一点或者裁短。
不会。精灵图只是把帧排在网格里,播放由你的游戏或动画代码控制。工具里会显示原始帧间隔,方便你对上节奏。
这里是帮你把动图里的帧抠出来;精灵图拼接工具是把你手上已有的帧图排成一张,顺序由你自己定。
四条路通向同一张精灵图。按你手上已经有什么来选。