1 选一个 GIF
- 文件
- —
- 大小
- —
- 画面
- —
- 帧数
- —
- 播放时长
- —
- 循环
- —
2 帧怎么出
每隔多少帧留一帧 不要全部,改成每两帧或每五帧取一帧,适合做一览图或者处理长录像。
时间清单 每一帧停留了多久、放在什么位置。一堆 PNG 摆在文件夹里带不走这些。
3 拆出来的帧
# GIF 拆帧 — 每一帧存成一张 PNG 每一帧都单独存成一张 PNG。 > 把动图 GIF 拆成一帧一帧,每帧单独存成 PNG,免费,全程在浏览器里完成。透明和时长都保留下来。什么都不上传,断网也能用。 这是一个浏览器交互工具,地址是 https://abox.tools/zh/split-gif/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明;使用工具请打开该地址。 ## 你的 GIF **在浏览器里处理**,无须上传处理。 GIF 的读取、解压和绘制都由你自己的浏览器完成,每一张 PNG 也是在这台机器的内存里编码出来的。就算这里有什么东西想把动图送走,页面的另一端也根本没有服务器可以接。 - ✗ 不上传 - ✗ 不注册 - ✓ 断网可用 - ✓ 开源 - ✓ 文件不出这台机器 ## GIF 拆帧的步骤 1. **选一个 GIF。** 拖到选择框里,或者自己找出来。浏览器直接从磁盘上读,页面会告诉你它看到了什么:尺寸、帧数、播多久、循环几遍。 2. **决定每张 PNG 里放什么。** **看上去的那一帧**是绝大多数人要的,也就是动画在那一刻的整幅画面。**只要这一帧真正存下的像素**是文件里实际带着的那块补丁,保持它自己的大小和位置。GIF 之所以小就是靠它,而它并不是动画看起来的样子。 3. **决定透明怎么处理。** PNG 能原样保留透明,这是诚实的默认值。要是这些帧要拿去的地方根本不认透明、会把它变成黑色,那就改成填一个颜色。 4. **挑出你要的帧。** 默认全要。“每两帧留一帧”用来给长录像瘦身,网格里的勾选框比它优先。编号从来不会变,所以不管你把邻居丢掉多少,第 42 帧还是第 42 帧。 5. **下载。** 从网格里一帧一帧存,或者打包成一个 ZIP 一次拿走,这样保存提示只弹一次,而不是几百次。ZIP 里可以放一个 `frames.txt`,写明每一帧停留了多久,这是一堆 PNG 摆在文件夹里唯一说不出来的事。 ## 说得更细的版本 [怎么把 GIF 拆成一帧一帧](https://abox.tools/zh/guides/split-a-gif-into-frames/): 把动图 GIF 的每一帧存成 PNG:为什么有些帧只是画面里的一小块、透明会怎么样,以及怎么把时间留住,好把它再拼回去。 ## 工具箱里还有 - [GIF 分析](https://abox.tools/zh/gif-analyzer/): 帧、延时、调色板,以及每个字节的去向。 - [视频压缩](https://abox.tools/zh/compress-video/): 说一个它最多能有多大。剩下的工具来算,做完先量一遍再交给你。 - [MP4 转换](https://abox.tools/zh/convert-to-mp4/): 不管从录屏、压制还是相机里出来的是什么,都变成 MP4 里的 H.264 和 AAC。能复制的原样复制,非改不可的才重新编码。 - [视频旋转](https://abox.tools/zh/rotate-video/): 转四分之一圈、半圈,或者往另一边转。使用文件头旋转时,每一帧画面保持原样。 ## 常见问题 ### 我的 GIF 会被传到哪里去吗? 不会。文件的读取、解压和绘制都由你自己的浏览器在你自己的硬件上完成,每张 PNG 也是在这里的内存里编码的。这个工具没有服务端,页面的 `Content-Security-Policy` 里写着它允许联系的每一个地址,没有一个属于本站。拔掉网线,它照样拆 GIF。 ### 为什么有一帧看着像画面的一小块? 因为文件里存的就是那样。GIF 是一张起始画面加上后面一连串补丁:后面每一帧只存变化的那个矩形,屏幕上其余部分是前面几帧留在那儿的。一个人对着不动的墙说话,于是每帧存的是一张脸,而不是一整幅画面,这个格式不至于大得离谱,全靠这一点。 \ \ 你现在看到这个,是因为选的是“只要这一帧真正存下的像素”。改成“看上去的那一帧”,每张 PNG 就都是动画在那一刻的整幅画面了。 ### 透明保留得住吗? 保留得住。GIF 的透明只有一位,一个像素要么画上了要么看不见,中间没有过渡,而 PNG 存的正好就是这个,所以帧出来时透明区域是完好的。你要是更想要实心背景,把“透明区域”改成填一个颜色,那个颜色会写进 PNG,之后就取不出来了。 ### 为什么帧延时不是我以为的数字? GIF 里每帧延时是按百分之一秒存的,而从九十年代起,浏览器就把小于两个百分之一秒的值一律抬到十分之一秒。这条规矩是为当年那些转动的地球图写的,后来一直没删。所以文件里写 0.01 秒的帧,在哪儿都是按 0.10 秒播。这个工具显示的是真正播出来的延时,两者对不上时,会把文件里存的值写在旁边。 ### 拆出来的帧还能拼回去吗? 能,用本站的 [GIF 制作](https://abox.tools/zh/gif-maker/),或者任何接受一文件夹图片的工具都行。ZIP 里那个 `frames.txt` 就是为这个准备的:拆动图会把时间信息丢掉,因为 PNG 没有地方记自己停留了多久,所以由这份清单把每帧的延时和位置一起带出来。 ### 帧可以存成哪些格式? PNG,而且是有意只给 PNG。GIF 的一帧最多 256 色、一位透明,PNG 能原样无损地存下来;换成 JPEG 就会把透明丢掉,凭空造出这一帧本来没有的颜色,而且对平涂画面来说通常还会更*大*。要是你确实需要 JPEG,事后用[图片尺寸调整](https://abox.tools/zh/resize-image/)转一遍。 ### 能读的帧数有上限吗? 本工具为源图缓冲区、保留的局部图、预览和输出使用512 MiB规划估算,并在已解码像素超过128 Mi之前停止。小的局部图不会减少完整源图的缓冲区。无法安全分配的方案会在绘制前被拒绝;部分结果也只有在缓冲区方案符合预算时才可使用。精灵图和累积的PNG同样计入。浏览器内部的分配、JS对象及canvas限制可能需要更多内存或更早拒绝,因此这不是可用内存的测量或避免耗尽内存的保证。 ### 坏掉的 GIF 打得开吗? 通常可以。从截断或缺少结束标记的文件中保留完整帧。部分帧的缺失区域会使用调色板第一种颜色,除非它是透明色;页面会提醒这种处理。没有可读帧的文件及不安全的缓冲区方案会被拒绝。 ### 它免费吗,需要注册吗? 免费,没有账号,不用登录,也没有试用期。帧上同样没有水印。本站带广告,经费就是从那儿来的,广告拿不到任何关于你文件的信息。 ### 断网能用吗? 能。页面加载一次之后断开网络,它照样干活。这也是证明“什么都没上传”最省事的办法,真要把你的动图送出去处理,拔线那一刻就停了。 ## 这条隐私承诺怎么核实 - **处理在这个浏览器里完成。** 本工具在浏览器里处理输入和结果,处理代码不把它们上传去处理。Content-Security-Policy 限制可用资源和连接目的地,但已允许的主机仍可接收请求。策略不检查载荷,不能单独证明什么都没有发出。请把具体操作的请求与源码核对,或断网完成该本地操作。 - **读 GIF 的就是仓库里的两个文件。** 浏览器会放 GIF,却不会把它的零件交给你,所以格式是在这里自己读的:`src/shared/gif-decode.js` 是容器和 LZW 解压,`src/shared/gif-compose.js` 是处置规则,决定前面几帧垫在下面之后,这一帧看起来是什么样。打开文件不需要去取任何东西,第一次用也不会下载什么引擎。 - **Google 加载了什么,又拿不到什么。** 广告脚本和统计脚本来自 Google。关于你动图的信息,一条也没有交给它们,文件、某一帧、名字、尺寸、帧数都没有。读取、解压、绘制、写出图片的每一行代码都由这个源提供,也都摆在仓库里。 - **捐助按钮加载了什么,又拿不到什么。** 页首那个“Buy me a coffee”按钮由 cdnjs.buymeacoffee.com 的脚本画出来,字体取自 Google Fonts。它不过是个链接,不上报访问,也拿不到关于你或你文件的任何东西。不点它就什么都不会发生,点下去到的是别人的站。 - **断网也照样能用。** 断开网络,这个页面上每一部分都照常工作。这是最省事的一条证明,真要把你的动图送出去拆,拔线那一刻就停了。 **你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的,构建脚本你能读,也能自己跑一遍,跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容,跟你自己从源码构建出来的结果对一遍就知道了: https://github.com/A-Box-of-Tools/website 最值得先读的几个文件:`config/site.toml` 里是 Content-Security-Policy,`src/shared/gif-decode.js` 是负责解压出每一帧的读取器,`src/shared/gif-compose.js` 是把它们一层层叠起来的规则。两者里都没有一行能碰到网络的代码。
GIF 拆帧的步骤
- 选一个 GIF。拖到选择框里,或者自己找出来。浏览器直接从磁盘上读,页面会告诉你它看到了什么:尺寸、帧数、播多久、循环几遍。
- 决定每张 PNG 里放什么。看上去的那一帧是绝大多数人要的,也就是动画在那一刻的整幅画面。只要这一帧真正存下的像素是文件里实际带着的那块补丁,保持它自己的大小和位置。GIF 之所以小就是靠它,而它并不是动画看起来的样子。
- 决定透明怎么处理。PNG 能原样保留透明,这是诚实的默认值。要是这些帧要拿去的地方根本不认透明、会把它变成黑色,那就改成填一个颜色。
- 挑出你要的帧。默认全要。“每两帧留一帧”用来给长录像瘦身,网格里的勾选框比它优先。编号从来不会变,所以不管你把邻居丢掉多少,第 42 帧还是第 42 帧。
- 下载。从网格里一帧一帧存,或者打包成一个 ZIP 一次拿走,这样保存提示只弹一次,而不是几百次。ZIP 里可以放一个
frames.txt,写明每一帧停留了多久,这是一堆 PNG 摆在文件夹里唯一说不出来的事。
说得更细的版本
怎么把 GIF 拆成一帧一帧 把动图 GIF 的每一帧存成 PNG:为什么有些帧只是画面里的一小块、透明会怎么样,以及怎么把时间留住,好把它再拼回去。
工具箱里还有
常见问题
我的 GIF 会被传到哪里去吗?
不会。文件的读取、解压和绘制都由你自己的浏览器在你自己的硬件上完成,每张 PNG 也是在这里的内存里编码的。这个工具没有服务端,页面的 Content-Security-Policy 里写着它允许联系的每一个地址,没有一个属于本站。拔掉网线,它照样拆 GIF。
为什么有一帧看着像画面的一小块?
因为文件里存的就是那样。GIF 是一张起始画面加上后面一连串补丁:后面每一帧只存变化的那个矩形,屏幕上其余部分是前面几帧留在那儿的。一个人对着不动的墙说话,于是每帧存的是一张脸,而不是一整幅画面,这个格式不至于大得离谱,全靠这一点。
你现在看到这个,是因为选的是“只要这一帧真正存下的像素”。改成“看上去的那一帧”,每张 PNG 就都是动画在那一刻的整幅画面了。
透明保留得住吗?
保留得住。GIF 的透明只有一位,一个像素要么画上了要么看不见,中间没有过渡,而 PNG 存的正好就是这个,所以帧出来时透明区域是完好的。你要是更想要实心背景,把“透明区域”改成填一个颜色,那个颜色会写进 PNG,之后就取不出来了。
为什么帧延时不是我以为的数字?
GIF 里每帧延时是按百分之一秒存的,而从九十年代起,浏览器就把小于两个百分之一秒的值一律抬到十分之一秒。这条规矩是为当年那些转动的地球图写的,后来一直没删。所以文件里写 0.01 秒的帧,在哪儿都是按 0.10 秒播。这个工具显示的是真正播出来的延时,两者对不上时,会把文件里存的值写在旁边。
拆出来的帧还能拼回去吗?
能,用本站的 GIF 制作,或者任何接受一文件夹图片的工具都行。ZIP 里那个 frames.txt 就是为这个准备的:拆动图会把时间信息丢掉,因为 PNG 没有地方记自己停留了多久,所以由这份清单把每帧的延时和位置一起带出来。
帧可以存成哪些格式?
PNG,而且是有意只给 PNG。GIF 的一帧最多 256 色、一位透明,PNG 能原样无损地存下来;换成 JPEG 就会把透明丢掉,凭空造出这一帧本来没有的颜色,而且对平涂画面来说通常还会更大。要是你确实需要 JPEG,事后用图片尺寸调整转一遍。
能读的帧数有上限吗?
本工具为源图缓冲区、保留的局部图、预览和输出使用512 MiB规划估算,并在已解码像素超过128 Mi之前停止。小的局部图不会减少完整源图的缓冲区。无法安全分配的方案会在绘制前被拒绝;部分结果也只有在缓冲区方案符合预算时才可使用。精灵图和累积的PNG同样计入。浏览器内部的分配、JS对象及canvas限制可能需要更多内存或更早拒绝,因此这不是可用内存的测量或避免耗尽内存的保证。
坏掉的 GIF 打得开吗?
通常可以。从截断或缺少结束标记的文件中保留完整帧。部分帧的缺失区域会使用调色板第一种颜色,除非它是透明色;页面会提醒这种处理。没有可读帧的文件及不安全的缓冲区方案会被拒绝。
它免费吗,需要注册吗?
免费,没有账号,不用登录,也没有试用期。帧上同样没有水印。本站带广告,经费就是从那儿来的,广告拿不到任何关于你文件的信息。
断网能用吗?
能。页面加载一次之后断开网络,它照样干活。这也是证明“什么都没上传”最省事的办法,真要把你的动图送出去处理,拔线那一刻就停了。