使用Glide加载图片时出现条纹和颜色混乱
一、问题概述
在使用Glide加载图片时,出现了条纹断裂和色块混乱的情况。
这是原图:
这是通过Glide加载出来的图片:
对比可以看出有明显的条纹和颜色的混乱,但是尝试另一个框架Picasso进行加载图片时,图片显示为正常:
二、通过对比来解决问题
Glide 和 Picasso 都是目前 Android 上最流行的图片加载库。大部分安卓应用开发人员都有使用过这两个库在他们的开发工作中。它们之间的差别主要体现在图片的缓存机制和默认色彩模式的差别。
色彩模式的差别
Glide 默认是用的 RGB_555 的设定,Picasso 则是用的 ARGB _8888的设定。这是Glide节省内存的一种策略,这个设定看起来会影响到图片显示,让我们来修改一下Glide的色彩模式。
<meta-data android:name="com.xxxx.xxxx.GlideConfiguration"android:value="GlideModule"/>
public class GlideConfiguration implements GlideModule {@Overridepublic void applyOptions(Context context, GlideBuilder builder) {// Apply options to the builder here.builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);}@Overridepublic void registerComponents(Context context, Glide glide) {// register ModelLoaders here.}
}
非常简单,新建一个GlideConfiguration类去实现GlideModule,在重写的applyOptions方法中加上一行代码,再在配置文件中加上这段代码来指定你新建的类所在的包路径。
缓存机制的差别 ##
Picasso:缓存图片时,是下载图片并且缓存一个完整大小的文件到本地,也就是源文件缓存下来。这是一种比较常见的缓存方式。
Glide:缓存图片时,是先下载图片,然后根据你imageView的大小来改变图片的大小,接下来才缓存这个修改后的缓存文件到本地。所以Glide缓存下来的文件并不是源文件。
Glide提供了四种缓存策略:
- DiskCacheStrategy.NONE :不缓存图片
- DiskCacheStrategy.SOURCE :缓存图片源文件
- DiskCacheStrategy.RESULT:缓存修改过的图片
- DiskCacheStrategy.ALL:缓存所有的图片,默认
在上文中使用的是ALL的缓存方式,将缓存方式改为SOURCE,这样Glide就不会对图片进行修改。
运行查看结果显示为正常:
三、总结
以上两个方面缺一个都会引起图片的颜色混乱。这也是Glide框架为了节省内存引起的图片牺牲。通过这个案例也收获了很多,解决问题的同时也学习了两个流行图片加载框架区别。
使用Glide加载图片时出现条纹和颜色混乱相关推荐
- Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果
Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...
- glide首次加载图片时,出现图片变形,重复一下就正常
glide首次加载图片时,出现图片变形问题,重复一下就正常了,这样看着总是很不爽! 简单粗暴的解决办法:将加载的动画去掉,出来的就加载正常了! dontAnimate() 例如:Glide.with( ...
- RecyclerView 滑动时不让 Glide 加载图片
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollS ...
- Glide加载图片模糊问题
关于Glide加载图片模糊 需求:1.整张界面展示大图,可缩放.2.在无网络情况下,展示缓存图片:3.大图要清晰. 1.缩放控件可以直接从网络上找,遍地的自定义view.由于项目里面用的有环信,所以直 ...
- Android Glide加载图片、网络监听、设置资源监听
Glide加载图片.加载进度监听 前言 正文 一.项目配置 二.显示网络图片 三.添加设置资源监听 四.添加设置资源监听 五.添加加载进度条 六.封装工具类 七.源码 总结 前言 在日常开发中使用 ...
- Glide加载图片尺寸不对的问题
问题: 因为icon_missing_image这张占位图尺寸导致问题: 如果Imageview中默认的占位图片大小没有填满Imageview,比如Imageview100*80,但是给Imagevi ...
- Android框架之路——Glide加载图片(结合RecyclerView、CardView)
Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...
- Android --- Glide加载图片时候调用asBitmap()方法的时候总是报错,点不出来?
今天写Glide加载图片的时候,网上给的例子全都是这样写的 很明显.asBitmap()在load后面,放到我的代码里就会报错,如下: 最后查了半天度娘才发现要在with()之后添加asBitmap( ...
- Android Glide加载图片成圆形
今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...
最新文章
- 目前最好用的大规模强化学习算法训练库是什么?
- JVM-09自动内存管理机制【内存分配和回收策略】
- Cordova Embedded Server
- ArrayList与String[]
- wordcount.java_mapreduce中wordcount的java实现
- java中图的封装,模拟java 中地图的功能封装一个有序的地图
- HTTP状态保持(cookie、session)
- C++中BEGIN_MSG_MAP或者BEGIN_MESSAGE_MAP的个人理解
- App个人信息保护合规十大常见问题及处置策略
- 物联网时代 公共建筑应该改变些什么
- Vue3 + Typescript + Node.js 搭建elementUI使用环境
- (转帖)如何在DE2上安裝μClinux作業系統? (Nios II )
- 20190930每日一句
- java集合uml_Java开源UML建模集合
- 瑞星服务器版序列号 2009,瑞星序列号2009 瑞星杀毒软件序列号和ID
- 华为云HCIE认证有多难?考试内容是什么?
- 数据库中delete和drop的区别
- 常见的文件名后缀及用法
- 聚簇索引,非聚簇索引
- HTB-Antique