oLoveTools
视频与图片 → GIF

在浏览器里,把视频或一堆图片变成 GIF

从视频里抽帧,或把一组图片排成序列,编辑时间轴,再用全局调色板和帧间压缩导出 GIF——全部在浏览器里完成。

编码之前,帧一直可以改整个循环共用一套调色板不上传,也不下载

拖入一段视频或一组图片

MP4、WebM、MOV、MKV、AVI,或 PNG、JPG、WebP、AVIF、GIF、BMP 和 HEIC 图片。

拖入文件不会启动任何处理:设置由你选,按钮由你按。

怎么用

1

把文件丢进来

一段视频,或者一堆图片。什么都不会上传,也不会自己跑起来。

2

选好范围

定好入点、出点和帧率再抽帧——或者一帧一帧手动挑。

3

编辑时间轴

删帧、倒序、让某一帧多停一会儿,再调颜色和抖动。

4

编码并核对

在预览上按住 Alt,把 GIF 和原图比一比,然后下载或直接送去下一个工具。

整段共用一套调色板

颜色是对所有帧一次性做中位切分选出来的,循环播到一半也不会串色。

只写动过的地方

和上一帧相同的像素直接继承,不再重新编码。录屏文件里,这部分几乎就是全部。

消掉色带的抖动

蛇形扫描的 Floyd–Steinberg 误差扩散,强度可调,64 色下渐变也不脏。

可编辑的时间轴

删帧、倒序、做成回文、把某一帧拉长。撤销不花代价:存的是编号,不是位图。

把你的核心都用上

动画被拆给一组 web worker,标签页仍然能操作,进度条数的是真实帧数。

什么都不会离开这个标签页

解码器、调色板和压缩器都是跑在你机器上的 JavaScript。没有上传,也没有从 CDN 拉模型。

和整套工具串起来

把画面上的这一帧直接送去裁剪、压缩或抠图,不用先下载下来。

视频转 gif

一个真正的 GIF 编码器,不是画布导出

帧是从已解码的视频里直接读取的,采用高质量缩放,中途绝不经过 JPEG。调色板对整段动画做中位切分得出,像素用蛇形扫描的 Floyd–Steinberg 抖动映射,而一帧与前一帧相同的部分会写成透明并被继承。工作被拆给一组 web worker,所以页面依然跟手,进度条跟的是真实帧数。

编码之前,帧一直可以改
整个循环共用一套调色板
不上传,也不下载

适合缺陷复现、演示和反应循环

把一个 bug 录一次,剪到真正关键的那四秒。把设计走查变成能在 pull request 里自动播放的东西。或者排几张截图,手工定好每张停多久。在你按下编码之前,时间轴一直可以改。

不上传,也不下载

每一步都在这个标签页里跑:视频解码用的是浏览器自己的解码器,量化器和 LZW 压缩器是随页面一起送达的 JavaScript,结果是一个从不离开你机器的 Blob。没有可以发文件的服务器,也没有要从 CDN 拉的模型或编解码器。代价说清楚:一切都受限于你的内存,所以 4K 片段得先剪短、缩小才编得动。

常见问题

Q有文件大小限制吗?+

没有写死的限制,但有实实在在的限制:帧就放在这个标签页的内存里。480 像素宽、4 秒、12 fps 的 GIF 大约是 50 MB 的工作数据,几秒钟就能编完;4K 片段则会在编完之前先把标签页耗尽。把范围剪短、把工作尺寸调低——那些控件就是干这个用的。

Q为什么我的 GIF 还是这么大?+

GIF 是 1987 年的格式:256 色,没有运动补偿。先减宽度,再减帧率,最后减调色板。把「复用没有变化的像素」保持开启,通常比这三样加起来还管用:录屏文件的大部分体积会因此消失。

Q为什么帧率不是我选的那个数?+

GIF 把每个延时存成百分之一秒,所以只存在 100/n 形式的帧率。要 12 fps 实际上是每帧 8 个单位,也就是 12.5。面板上显示的是你真正会得到的帧率,而不是你要求的那个。

Q能吃哪些格式?+

浏览器能播的视频都行——MP4/H.264、WebM、MOV,很多时候还有 MKV;图片方面支持 PNG、JPG、WebP、AVIF、GIF、BMP 和 iPhone 的 HEIC。作为图片放进来的 GIF 动图,只会贡献它的第一帧。

Q有东西会被上传吗?+

不会。没有上传步骤,也没有任何外部请求:编码器随页面一起送到,在这个标签页的 web worker 里运行。

Q可以保留透明吗?+

可以,打开「保留透明」开关。GIF 只支持一种完全透明的颜色,所以柔和的边缘会变成硬边。它不能和像素复用同时使用,因为两者需要同一个透明槽位。

相关搜索

视频转 gif制作 gif图片转 gifmp4 转 gif压缩 gifgif 动图免费 gif 转换器gif 编辑器
oLoveTools 实用工具集成员
oLoveTools

免费、安全且高度可定制的客户端本地 GIF 创建工具。

一个真正的 GIF 编码器,不是画布导出

帧是从已解码的视频里直接读取的,采用高质量缩放,中途绝不经过 JPEG。调色板对整段动画做中位切分得出,像素用蛇形扫描的 Floyd–Steinberg 抖动映射,而一帧与前一帧相同的部分会写成透明并被继承。工作被拆给一组 web worker,所以页面依然跟手,进度条跟的是真实帧数。

适合缺陷复现、演示和反应循环

把一个 bug 录一次,剪到真正关键的那四秒。把设计走查变成能在 pull request 里自动播放的东西。或者排几张截图,手工定好每张停多久。在你按下编码之前,时间轴一直可以改。

不上传,也不下载

每一步都在这个标签页里跑:视频解码用的是浏览器自己的解码器,量化器和 LZW 压缩器是随页面一起送达的 JavaScript,结果是一个从不离开你机器的 Blob。没有可以发文件的服务器,也没有要从 CDN 拉的模型或编解码器。代价说清楚:一切都受限于你的内存,所以 4K 片段得先剪短、缩小才编得动。

视频转 gif制作 gif图片转 gifmp4 转 gif压缩 gifgif 动图免费 gif 转换器gif 编辑器

常见问题

有文件大小限制吗?

没有写死的限制,但有实实在在的限制:帧就放在这个标签页的内存里。480 像素宽、4 秒、12 fps 的 GIF 大约是 50 MB 的工作数据,几秒钟就能编完;4K 片段则会在编完之前先把标签页耗尽。把范围剪短、把工作尺寸调低——那些控件就是干这个用的。

为什么我的 GIF 还是这么大?

GIF 是 1987 年的格式:256 色,没有运动补偿。先减宽度,再减帧率,最后减调色板。把「复用没有变化的像素」保持开启,通常比这三样加起来还管用:录屏文件的大部分体积会因此消失。

为什么帧率不是我选的那个数?

GIF 把每个延时存成百分之一秒,所以只存在 100/n 形式的帧率。要 12 fps 实际上是每帧 8 个单位,也就是 12.5。面板上显示的是你真正会得到的帧率,而不是你要求的那个。

能吃哪些格式?

浏览器能播的视频都行——MP4/H.264、WebM、MOV,很多时候还有 MKV;图片方面支持 PNG、JPG、WebP、AVIF、GIF、BMP 和 iPhone 的 HEIC。作为图片放进来的 GIF 动图,只会贡献它的第一帧。

有东西会被上传吗?

不会。没有上传步骤,也没有任何外部请求:编码器随页面一起送到,在这个标签页的 web worker 里运行。

可以保留透明吗?

可以,打开「保留透明」开关。GIF 只支持一种完全透明的颜色,所以柔和的边缘会变成硬边。它不能和像素复用同时使用,因为两者需要同一个透明槽位。

© 2026 oLoveTools关于

GIFBolt | 免费在线视频转 GIF 与多图合成 GIF 工具

在浏览器里把视频或图片序列转成 GIF 动图:可编辑时间轴、全局调色板、Floyd–Steinberg 抖动和帧间压缩。什么都不上传。

常见问题

有文件大小限制吗?

没有写死的限制,但有实实在在的限制:帧就放在这个标签页的内存里。480 像素宽、4 秒、12 fps 的 GIF 大约是 50 MB 的工作数据,几秒钟就能编完;4K 片段则会在编完之前先把标签页耗尽。把范围剪短、把工作尺寸调低——那些控件就是干这个用的。

为什么我的 GIF 还是这么大?

GIF 是 1987 年的格式:256 色,没有运动补偿。先减宽度,再减帧率,最后减调色板。把「复用没有变化的像素」保持开启,通常比这三样加起来还管用:录屏文件的大部分体积会因此消失。

为什么帧率不是我选的那个数?

GIF 把每个延时存成百分之一秒,所以只存在 100/n 形式的帧率。要 12 fps 实际上是每帧 8 个单位,也就是 12.5。面板上显示的是你真正会得到的帧率,而不是你要求的那个。

能吃哪些格式?

浏览器能播的视频都行——MP4/H.264、WebM、MOV,很多时候还有 MKV;图片方面支持 PNG、JPG、WebP、AVIF、GIF、BMP 和 iPhone 的 HEIC。作为图片放进来的 GIF 动图,只会贡献它的第一帧。

有东西会被上传吗?

不会。没有上传步骤,也没有任何外部请求:编码器随页面一起送到,在这个标签页的 web worker 里运行。

可以保留透明吗?

可以,打开「保留透明」开关。GIF 只支持一种完全透明的颜色,所以柔和的边缘会变成硬边。它不能和像素复用同时使用,因为两者需要同一个透明槽位。

相关搜索

视频转 gif, 制作 gif, 图片转 gif, mp4 转 gif, 压缩 gif, gif 动图, 免费 gif 转换器, gif 编辑器