GIF 转图片序列

从 GIF 动画中提取所有帧,导出为图片序列。支持 PNG、JPEG、WebP 输出格式。

GIF 转图片的工作原理

一张动图 GIF 本质上是一个文件,里面打包了多个帧,每一帧都带有自己的一小份调色板(最多 256 色)、一个显示时长,以及一条处置指令,告诉播放器在绘制下一帧之前是要清空、保留还是恢复画布。GIF 转图片工具会在您的浏览器中直接读取这份帧数据,依次解码每一帧,按照对应的处置方式把它合成到正确的背景上,并把结果绘制到一个画布上,效果和动画播放到那一刻时完全一致。每个画布随后会被单独编码为一个 PNG、JPEG 或 WebP 文件,因此一个 40 帧的 GIF 会变成 40 张独立的静态图片。它做不到的事情:它无法对图片做超分辨率放大、锐化,也无法提升色深,超出源 GIF 本身的水平——GIF 每帧限定在 8 位、256 色的调色板内,因此提取出的帧会继承文件中原有的色带或抖动痕迹,无论您选择哪种输出格式都是如此。它也不会在帧变成静态图片之后保留逐帧的时间信息,而且每个存储的帧只会生成一张对应的图片——它不会把帧合并在一起,也不会凭空生成一个原本不存在的过渡帧。

什么时候真正需要帧提取这个工具

当您需要把一个 GIF 的各个帧变成真正独立的文件,而不是用来播放时,就该用它。游戏和网页开发者用它把手绘的 GIF 动画拆解成可以直接用于精灵表(sprite sheet)的序列,而不用从头重新绘制每一个姿势。任何需要为 CMS、产品页面或社交卡片挑选缩略图或预览图的人,都可以提取出每一帧,精确挑出那张定格后依然好看的画面,而不是靠猜测截图会碰巧捕捉到哪个瞬间。如果某一帧需要单独修饰——裁剪、改色、去除某个物体——先把它提取出来,能得到一份干净的静态文件在主编辑器里编辑,而不用在一段动态动画内部尝试编辑。它同样适合用来诊断在某些应用里播放异常的 GIF:把每一帧按顺序单独查看,能把处置方式导致的错误和杂散痕迹暴露出来,而这些问题在播放时是被掩盖住的。对于表情包或反应 GIF,它也是抓取那个“笑点帧”作为独立图片、用于配文图的最快方式。

精确的逐帧提取,无需重新绘制
从真实帧中挑选海报帧
输出序列可直接用于精灵表制作
完全在客户端运行,不上传任何内容

从 GIF 中提取帧

整个流程刻意设计得很简短——不需要手动逐帧操作,文件加载完成后,提取会自动开始。

1

拖入或选择您的 GIF 文件——它会在您的浏览器中本地读取,不会发送到任何地方

2

提取会自动开始;工具会显示“提取帧中...”,同时按顺序解码每一帧

3

把输出格式设置为 PNG、JPEG 或 WebP——参考提示(“PNG 追求最佳质量,JPEG 追求更小体积,WebP 适合现代浏览器”)来匹配您的使用场景

4

当提示“已提取 X 帧”时,检查整个序列,下载您需要的帧

常见问题

每一帧都是作为一张普通静态图片导出的,而 PNG、JPEG 和 WebP 都没有存放动画延迟的字段,因此逐帧的时间信息不会被带入输出文件。如果您以后会需要这些信息,请把原始 GIF 和提取出的帧一起保留,或者在提取之前先记下每一帧的延迟时间。之后如果要用这些帧重新组装动画,比如用图片转 GIF 工具,就需要手动重新设置每帧的延迟。
没有硬性设定的帧数或文件大小上限,因为提取过程发生在您的浏览器标签页内,而不是受限于服务器配额。实际使用中,一个有几百帧或画布很大的 GIF,在性能较弱的设备上可能会变慢或占用较多内存,因为每一帧在导出前都需要被解码和渲染。对于非常大的动画,使用性能更强的设备,或者分成较小批次提取,处理速度会明显更快。
它们的方向正好相反。GIF 转图片是把一个动图 GIF 拆解成一组带编号的静态 PNG、JPEG 或 WebP 文件。图片转 GIF 则是把一组独立的静态图片组装成一个动画,让您可以设置逐帧延迟和循环方式。如果您的工作流程是先提取、再编辑、再重新组装,那就先用这个工具,再用图片转 GIF 把编辑好的帧重新拼在一起。
解码出来的像素在开始时是完全一致的,因为每一帧 GIF 只会被解码一次,然后复用到您选择的任何输出格式上。PNG 会以无损方式重新编码,因此您得到的正是 GIF 原本存储的内容,包括调色板本身的限制。JPEG 会在此基础上叠加有损压缩,可能会在 GIF 有限调色板容易产生的硬边缘周围引入额外的痕迹,而 WebP 通常能在两者中获得更小的体积和更不明显的损失——这也符合工具本身给出的提示:PNG 更看重质量,JPEG 更看重体积,WebP 适合现代浏览器。
从结构上说,单帧 GIF 依然是有效的动图 GIF 数据,因此它会按同样的方式被解码,并生成恰好一张输出图片,而不是一个序列。您会看到“已提取帧数”显示为 1,这在功能上等同于直接把 GIF 转换成 PNG、JPEG 或 WebP。
通常这是 GIF 的处置方式在那个具体帧边界上被正确应用的结果,而不是 bug。有些 GIF 每一帧只重绘发生变化的区域,依赖上一帧的像素继续显示在下面——把其中某一帧单独拿出来看,就可能显得像是合成在了一个它本不该单独面对的背景上。把它和序列中紧邻的前后帧对比一下,通常就能解释您看到的现象。
不会。GIF 转图片的解码和帧提取完全在您的浏览器标签页内进行,GIF 文件永远不会离开您的设备,也不会到达服务器。这也意味着处理速度取决于您自己的硬件性能,而不是网络连接状况。
这个工具每次运行都会解码并导出所有帧——没有可以在提取前指定某一帧的控制项。如果您只需要其中一帧,请先完成整个提取过程,再从导出的结果中挑选您需要的那一帧,比如最合适的那张海报帧,丢弃其余的即可。

更多图片工具

探索其他强大的图片编辑工具