AI 动图改完后快慢变了,怎样保留 GIF 每帧时长再导出

2026-10-24

GIF编辑后要重新打开输出文件,逐帧比较帧数和duration列表,再核对总时长。只比较总计700毫秒仍可能漏掉一快一慢两帧被调换的问题,静态打开第一帧也不能说明动画节奏保留。

原文件先读出完整时间线

附件三帧原创动画分别持续100、200、400毫秒,移动位置和颜色都不同。脚本用ImageSequence逐帧读取,再转换RGBA并统一放大到96×96。读取时保留每帧duration,另外记录循环设置;不能将首帧的duration复制给全部帧。GIF的局部更新和disposal还可能影响合成帧外观,因此中间编辑应基于正确解码后的整帧而不是孤立的小块。

几何处理与时间处理分开

本例每帧都做相同的最近邻缩放,再把原duration列表交给编码器,并显式设置disposal。这个选择适合合成色块,不保证对任何透明动画都保持原来的局部擦除语义。处理真实图时,应保留输入文件和逐帧预览,检查残影、边缘与循环第一帧;不能因为时长正确就忽略画面被改坏。

重开文件回读每一帧

edited.gif重新打开后应仍为三帧,duration依次100、200、400,总和700。frame-timeline.csv把输入与输出并排展示,不需要肉眼估计播放速度。GIF时间以百分之一秒存储,随意设置非整十毫秒可能发生取整;编码器也可能合并重复帧,所以附件故意让三帧可区分,避免以为帧数变化必然是解码错误。

失败对照能检查节奏丢失

边界命令故意把每帧改成100毫秒,输出会显示preserved为false,说明回读确实能抓住节奏变化。实际脚本升级后应同时比帧序、时长、尺寸与画面,再决定能否交付。循环次数与总时长是不同维度,无限循环不能简单计算整段播放多久。这个样例没有调用AI编辑服务;它只解决已经拿到GIF之后的本地逐帧处理与时间线核对,不能证明模型生成动作自然。

如果编辑器打开后自动优化并合并相同帧,应重新导出时间线核对合并是否保留累计持续时间。此时帧数变化可能合理,但要解释映射关系;不能用“编码器会优化”作为所有丢帧或时长变化的统一借口。

下载与复现

下载完整样例包,解压到一个新文件夹;也可查看全部文件清单和主脚本。使用Python 3.10或更新版本,在解压目录运行。依赖写在安装清单,建议在自己创建的虚拟环境安装。

python -m pip install -r requirements.txt
python -B run.py
python -B run.py --negative

先查看主要结果,再修改输入重跑;已有输入会保留,结果写回同目录。边界命令可能故意非零退出,也可能输出明确的不适用状态,按正文说明判断,不把所有非零退出都当成安装故障。

依据与延伸阅读

资料核对日期为2026年10月24日。一手资料1:GIF读写支持逐帧duration、循环与disposal,编码器可能优化合并帧。

相关参考2:Pillow支持转换与缩放;几何变换与逐帧时间线需要分别保留。

继续阅读:三本风格 playbook 控制什么:排版、配色、动效、音频与质量规则;AI 给了一整张精灵表,怎样按网格切成帧并导出游戏可用的图集说明;AI 生成的纹理说是无缝,怎样平铺预览并找出接缝。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

加微信,把这一页存到手机上

扫码加站长企业微信,会自动把这一页的链接发给你,方便在手机上接着看。AI 落地卡住了,也可以直接问。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。