把产品演示的 GIF 转成 WebP,体积确实小了一半,页面上却一动不动,只剩第一帧定在那里,点开播放也不动。乍看像缓存或者权限的锅,追下去往往不是。
gif2webp -q 75 -m 6 -loop 0 a.gif -o a.webp webpinfo a.webp | grep -i animation
追下去是这么回事:转换工具默认只输出静态图,循环次数和帧间隔都没有设置,生成的文件里只有一帧图像数据,播放器读到就停住不会再往下走。
碰到「动图 WebP」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
具体做法是,换成专门处理动画的那个命令行工具再试一次;显式指定循环次数和帧间隔 这两个参数都要写上;同时保留原来的动图文件 作为不支持时的回退。
验收就看一点,页面上动画能正常循环播放,文件体积比原来的动图小一半左右。
