美文网首页Android utilsGlide学习
格式不完整(丢帧, 压缩出错)的GIF图片解码

格式不完整(丢帧, 压缩出错)的GIF图片解码

作者: vb12 | 来源:发表于2017-11-17 18:29 被阅读1698次

使用glide显示gif动图时, 报错

http://pic.wenwen.soso.com/pqpic/wenwenpic/0/20171116143737-1895154083_gif_398_305_3740344/0

在浏览器能够打开动图,  但是glide加载时只显示静态图片, 并且log有错误:

Glide: Load failed for http://pic.wenwen.soso.com/pqpic/wenwenpic/0/20171116143738-1327109971_gif_405_293_3665345/0 with size [-2147483648x-2147483648]

class com.bumptech.glide.load.engine.GlideException: Failed to load resource

Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ContentLengthInputStream->GifDrawable->GifDrawable}, REMOTE

Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ContentLengthInputStream->GifDrawable->GifDrawable}

发现这个问题的原因是因为上面那个gif图片格式不够完整, 只有63帧,  而原始图有95帧, 原始图地址:

https://wx2.sinaimg.cn/large/866a67c7gy1fkaw7ewstng20b208hhdx.gif

而在浏览器 或者ios系统上都能支持这个图片的动画展示.  说明人家的解码库很健壮.

(同事说即刻的gif解码器是native层的,  听起来很高大上啊)

而glide的解码库  其实就是一个java文件了,  从名字看就好像是说要按照标准的gif格式来.:com.bumptech.glide.gifdecoder.StandardGifDecoder.java

最终解决方案:  只能比照这个解码器, 自己修改一下, 让其兼容格式不完整的gif图片,  而怎么把自己定制的而这个解码器对象, 赋值给glide, 达到替换原始解码器的效果.  为了后面这个事情, 折腾了一下午,  对glide的掌握还是不够深入啊.

最终搞定了, 已经放到github上, 目前还是纯java层的实现, 据说当页面上gif动图显示太多时会有效率问题,后续考虑在native层重写一遍

https://github.com/shaopx/InCompleteGifDecoder

相关文章

  • 格式不完整(丢帧, 压缩出错)的GIF图片解码

    使用glide显示gif动图时, 报错 http://pic.wenwen.soso.com/pqpic/wenw...

  • webp介绍

    图片格式 传统格式 JPEG(有损压缩) PNG (无损压缩、透明通道) GIF (多帧动画) 新兴格式 APN...

  • rtsp花屏

    总的来说,播放流媒体的过程中花屏大多说是由于解码前后存在丢帧,存在丢帧的原因就可能有很多了 1:文件本身就是不完整...

  • iOS对图片进行像素读取

    图片解码 常见的图片压缩格式主要是PNG和JPEG,在iOS的程序开发中,一般不需要获取一张图片解码后的数据,但如...

  • 性能优化<第六篇>:图片压缩

    1、Android常用的图片格式 2、位图的色彩模式 3、解码 4、Bitmap大小的计算 5、图片压缩思路 6、...

  • 使用 Gif Lib 加载 Gif 图

    一、GIF 的文件格式 What's a GIF 文章 GIF 格式解析 GIF 实际是一种压缩文件,采用 LZW...

  • 免费在线图片GIF工具-爱金果

    说起gif、图片、视频相关处理工具,可以想到 TinyPNG,ezgif等工具,可以进行压缩、编辑、裁剪、格式转换...

  • 前端学习日记(四)

    图片格式: JPEG:图片颜色比较多,可压缩,但不支持透明,一般用于保存颜色丰富的图片; GIF:支持颜色少,支持...

  • iOS SDWebImage加载webP格式图

    为什么要用webP? WebP是google创造出的一种图片格式,图片的压缩和解码都由google提供的API完成...

  • iOS 图片解码

    为甚要解码?你问我为啥要解码?事实上,不管是 JPEG 还是 PNG 图片,都是一种压缩的位图图形格式。只不过 P...

网友评论

    本文标题:格式不完整(丢帧, 压缩出错)的GIF图片解码

    本文链接:https://www.haomeiwen.com/subject/wuajvxtx.html