TWIN IMAGE · APNG

多图合成 APNG

Canvas 逐帧编码 · 图 A 封面 · 点开原图播放图 B

图 A 封面 · 不点开时看到的
🖼️
点击 / 拖入 / Ctrl+V
建议先选这张
还没有选择图片
图 B 点开原图后依次播放 · 可多张
点击 / 拖入 / Ctrl+V
可一次选多张,按顺序播放
还没有选择图片

高级设置

选好图 A 和至少一张图 B 后就能合成。

合成结果

合成结果

上面这张正在自动播放 —— 就是对方点开「原图」后看到的效果。

下载 PNG

文件名已带时间戳,直接发给对方即可(记得勾选原图)。

图 A
图 A · 聊天里第一眼看到
图 B 第一张
图 B · 点开原图后依次播放

发送时一定要注意

  1. 如果下载不了,请使用浏览器打开链接。
  2. 发送时勾选「原图」。这是整个效果成立的前提:平台一旦压缩,动画帧会被丢掉,对方就只会看到图 A。
  3. 所有图的长宽比最好一致。比如都是 3:4、都是 1:1。比例不同时,图 B 会被拉伸成图 A 的尺寸,人脸容易变胖或变长。
  4. 体积尽量控制在 1MB 以内。默认 1080px 单次合成,不再自动降分辨率;超过目标体积只做提示,建议减少图 B 张数。
  5. 对方要点「查看原图」才会动。聊天列表里静止显示图 A;点开大图后按「图 B 每帧停留」播放:选 0.5/1/3 秒是循环播放(每轮会从图 A 重新开始),选「永久」则图 A 基本不出现、最后定格在图 B。
为什么对方只看到图 A,不动?

多半是发送时没勾「原图」,或者平台把图片转码成了 JPEG。重新发一次、勾上原图即可。另外微博、X(Twitter)这类平台会把动图统一转成静态图,只保留第一帧,效果无法成立。

为什么点开后还会闪一下图 A?

把「图 B 每帧停留」选成 0.5/1/3 秒就是循环播放:每播完一轮会从图 A 重新开始,所以会看到图 A 闪一下。选「永久」则会把图 A 那一帧压到 0.01 秒(基本看不见),最后一张图 B 停留 APNG 格式的单帧上限 65535 秒(约 18 小时),观感就是点开后一直显示图 B、不再轮换。APNG 单帧最长只能是 65535 秒,写不出真正的「无限」,所以理论上到点会回到图 A 一次——18 小时之内看不到。

支持哪些平台?

微信、QQ 的聊天窗口(勾选原图)实测可用;Telegram 需要用「以文件发送」的方式;Discord 需要点开图片链接。凡是会二次压缩图片的平台都不行。

图片会被上传到服务器吗?

不会。合成完全由浏览器里的 Canvas 和内置的 APNG 编码器完成,断网也能用(页面本身加载完之后)。关闭页面后什么都没有留下。

为什么合成后的文件比原图加起来还小?

工具会先按最大边长缩放,再把每张图各作为一帧、用 PNG 无损压缩打包成一个动图。图 B 有几张就有几帧,所以张数越多、体积越大。

为什么下载下来是 .png,不是 .apng?

APNG 本身就是 PNG 的扩展格式,用 .png 后缀能让微信、QQ 之类的平台正常当作图片接收(.apng 有些平台不认)。文件内容确实是多帧动图。