遗留终端 GIF:用调色盘换解码兼容性,先锁最大分辨率再谈观感
`legacy-viewer-jpg-gif` 面向旧 WebView 与工控展示:能播 GIF89a 但不稳定支持视频与新图像格式。需限制画布与帧数防 OOM,谨慎使用透明边缘与复杂 disposal。文案字号加大、对比提高,因低 DPI 与差伽马下细节迅速丢失。
旧 WebView JPG 转 GIF:按设备清单分层导出,并在实机验证 disposal 与循环
- 按设备清单设硬上限分辨率与帧数,先压 JPG 再量化;复杂透明改实底卡片样式以减少合成差异。
- 目标实机长循环播放,记录内存与帧时间方差;异常只播首帧时抓日志区分解码失败与策略拦截。
- 离线包与在线包分支版本号,低性能设备单独下发「低帧版」;保留 PNG 静帧兜底供无动画模式使用。
JPG 转 GIF(老系统)常见问题
旧 Android WebView 里 GIF 闪一下就停或严重掉帧,应降分辨率、减帧还是改循环标记?
先减半长边并砍掉中间过渡帧验证是否解码性能瓶颈;若仍异常,检查是否用了浏览器不擅长的全屏透明 disposal 或大画布。部分容器对 `loop=0` 与缺省循环解释不同,可显式写成有限次循环做 A/B;根本方案仍是降低像素总量与每帧差异。
内嵌浏览器用户代理伪造成 Chrome,实际解码能力更老,如何设计降级而不误伤真 Chrome?
以容器 SDK 版本与白名单为准,不只信 UA;可在 App 内打开 `about:version` 或调用原生接口探测。为嵌入式场景单独下发「低分辨率 GIF」配置开关,由客户端显式声明能力。
工厂平板内存极小,播放大 GIF 直接 OOM,应如何定硬上限?
按「宽×高×帧数×4」估算峰值并留安全系数,在流水线拒绝超阈值任务;更稳妥是限制最长边与帧数组合。现场保留崩溃日志与复现 GIF 哈希,避免口头报「卡」。
透明 GIF 在旧系统出现黑边或白边,是 matte 还是浏览器合成 bug?
JPG 无真透明,若强行抠底转 GIF,边缘 matte 与旧合成器预乘不一致就会露边;应在源图用纯色底或接受矩形卡片样式。测试浅/深两色背景叠放,不通过则改设计而不是堆滤镜。
离线包需内置 GIF 供无网展示,如何控制包体同时保证可辨认?
为离线版单独导出「低帧低边」 variant 并与在线版哈希区分;关键界面配 PNG 静帧兜底。更新包时分模块差分,避免每次全量重下 GIF 集合。