CocoCreator 2.4.x播放gif,原生也兼容播放,有偿求个解决方案

显示异常就是这样的1

,下面一闪一闪的黄色闪光是那个2025的gif

判断是gif,显示个默认图

不行奥,产品就是要播放gif,SVIP的特权

头像一个WebView头像框一个WebView可行吗 还有啥需要盖在这上面的吗 切换别的页面的时候再隐藏掉

你这都能跑起来了,成功了一大半,在原来的基础上改改就好了

不行奥,一开始就试了这个方案,兼容性差,而且点击事件不好加

没有通用的解析
当遇到以下类型的 GIF 文件时,很可能解析失败或显示异常:

一、无法解析的常见 GIF 类型

1. ​ 含复杂扩展块的 GIF

  • 问题 :未处理 Application Extension (如循环播放信息)或 Comment Extension
  • 示例 :带有 NETSCAPE2.0 循环标记的 GIF,手动解析器可能忽略该块,导致动画只播放一次。

2. ​ 使用交织(Interlace)编码的 GIF

  • 问题 :未实现交织像素的重新排序逻辑,图像显示为错乱的扫描线。
  • 现象 :解析后的图像呈“撕裂”状,而非渐进加载效果。

3. ​ 含非标准 LZW 压缩的 GIF

  • 问题 :某些老旧编码工具生成的 LZW 数据不符合标准(如过早重置字典)。
  • 现象 :解压失败,图像出现乱码或无法显示。

4. ​ 多帧动画的透明色和处置方法

  • 问题 :未解析 Graphic Control Extension 中的 Disposal Method (处置方法)。
  • 现象
    • Disposal Method = 1 (用背景色填充):残留上一帧内容。
    • Disposal Method = 2 (恢复为上一帧状态):动画叠加混乱。

5. ​ 局部颜色表覆盖异常的 GIF

  • 问题 :未正确处理局部颜色表与全局颜色表的覆盖关系。
  • 现象 :颜色错乱,部分帧使用错误的调色板。

最难的就在后面那一段,现在的gif解析耗时特别长,一个循环30万次,要老命了

你们的需求应该改成使用项目定义的gif,不能让用户上传,不然兼容性没发保证的,或者出错了告诉用户,让换成其他gif资源,并且不能超过多大

建议揍产品一顿,然后把需求改成ssvip可使用定制头像框,头像动效等等

都超级vip了
给他配一个1对1客服,让他提需求要什么样的头像
然后给他做一个spine动画当头像 :joy:

定制头像框已经做了,剩下的就是揍策划了

超级VIP充的不够,才100​:heavy_dollar_sign:一个月,不值得一对一

涨到1000再说

使用Plane B了,服务端把gif解析成碎图还有帧时间数据,下发给客户端,客户端自己去根据时间设置图片,方案可行

1赞

那个libgif 应该能满足你的需求, 你自己查查看, 不过如果你是客户端可以考虑在客户端找解码组件,用桥接解码后把rgba buffer回传给js 进行canvas处理
另一种可以布nodejs服务器, 用sharp那个库解gif动画, 但ta是弄成一张上至下的序列帧图, 你自己要做处理, 不然尺寸超标就无法渲染。

那个库在浏览器上问题不大,上安卓和iOS后就好多播放不了,就是尺寸,uv什么的把握不好

刚写了一个,使用两种方式实现,各有优缺点,如果有哪位同鞋有优化改进,欢迎反馈更新。
1,结合shader,不适合图片多或大图
2,创建spriteframe实现

CocosGifPlayer.zip (1.9 MB)

6赞

之前的代码有点小问题,没有把gifTexture和frames重制,重新更新上传了一下

大佬厉害,待我空闲的时候试试这个方案,我暂时用服务端解析成帧图片和时间间隔json,打包成zip,客户端下载zip到本地,解析zip,通过时间间隔去设置帧图片来模拟gif效果