zenconverter 中文文档 下载 App

GIF 拆帧与 PDF/ICO 输出

GIF 不是单一格式

GIF 输入在 ZenConverter 里有两个独立选项,不是"GIF → PNG"一条路:

选项效果输出
转首帧只取 GIF 的第一帧,输出一张静态图JPG/PNG/WEBP/ICO/PDF
拆帧把 GIF 拆成每一帧,每帧作为独立文件保存JPG/PNG/WEBP/ICO/PDF(每帧一个文件)

选哪个取决于你为什么要处理这个 GIF。

转首帧

最简单的路径。GIF 解码器把第一帧解码出来,然后按你选的输出格式编码。适合:

走 Android 原生 Bitmap 解码 → 目标输出编码 的管线。

拆帧

拆帧走 FFmpeg 兼容路线(不是 Android Bitmap 路线),因为需要逐帧解码 GIF 动画。流程:

GIF → FFmpeg RGBA raw frame stream → 逐帧编码到目标格式 → 保存到子文件夹

为什么用 FFmpeg 而不是 Bitmap

Android Bitmap 解码 GIF 只会给你第一帧(大多数 Android BitmapFactory 实现不支持 GIF 动画)。拆帧需要 FFmpeg 的 GIF demuxer 逐帧解码。

输出组织

拆帧的输出会保存在一个子文件夹里,命名规则是"源文件名_拆帧输出/",里面每帧一个文件:

源文件.gif → 源文件_拆帧输出/帧_00001.png, 帧_00002.png, ...

如果选 PDF 输出,就是每一帧变成 PDF 的一页,整个拆帧序列合并成一个 PDF(而不是每帧一个 PDF)。

适用场景

ICO 从 GIF 来

GIF(首帧或拆帧后选某一帧)→ ICO,这条路径是先解码成 raster 图,再按 ICO 多尺寸规则输出。这和从 PNG 转 ICO 的路径是一样的——都是从一个 raster 源生成 PNG-in-ICO 多尺寸容器。

GIF 不保留的东西

项目是否保留原因
帧延迟(frame delay)❌拆帧输出是独立文件,没有"时序"概念
循环次数(loop count)❌同上
调色板❌解码成 RGBA 后重新编码,原始 GIF 调色板不保留
元数据❌GIF 容器的元数据不被处理

已知边界

和其他图片路线的关系

相关页面