Glide-图片预处理(圆角,高斯模糊等)
来源:互联网 发布:mac优化 编辑:程序博客网 时间:2024/04/30 06:32
前言:
之前已经讲解过如何简单的显示图片,但是有时候项目中会有很多特殊的需求,比如说圆角处理,圆形图片,高斯模糊等,Glide提供了方法可以很好的进行处理,接下来我们就介绍一下
Glide 系列目录
- 1.Glide-入门教程
- 2.Glide-占位图以及加载动画
- 3.Glide-加载本地图片
- 4.Glide-加载Gif
- 5.Glide-绑定生命周期
- 6.Glide-内存缓存与磁盘缓存
- 7.Glide-通过Modules定制Glide
- 8.Glide-自定义缓存
- 9.Glide-图片的压缩
- 10.Glide-图片预处理(圆角,高斯模糊等)
- 11.Glide-图片的剪裁(ScaleType)
- 12.Glide-源码详解
1.创建一个类继承BitmapTransformation
需要实现两个方法,其中transform方法里面能拿到bitmap对象,这里就是对图片做处理的地方
public class CornersTransform extends BitmapTransformation { @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { //TODO } @Override public String getId() { //TODO }}
2.使用
通过调用transform方法就能展示处理后的图片
Glide.with(this).load(url).transform(new CornersTransform()).into(iv1);
3.举例(圆角处理)
3.1 自定义Transformation
public class CornersTransform extends BitmapTransformation { private float radius; public CornersTransform(Context context) { super(context); radius = 10; } public CornersTransform(Context context, float radius) { super(context); this.radius = radius; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return cornersCrop(pool, toTransform); } private Bitmap cornersCrop(BitmapPool pool, Bitmap source) { if (source == null) return null; Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); if (result == null) { result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(result); Paint paint = new Paint(); paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); canvas.drawRoundRect(rectF, radius, radius, paint); return result; } @Override public String getId() { return getClass().getName(); }}
3.2 使用
Glide.with(this).load(url).transform(new CornersTransform(this,50)).into(iv1);
效果如下:
4.使用多个transform
transform方法是不支持多次调用的,如果你调用了两次,那么第二次的会覆盖了第一次的效果
但是他有一个重载的方法可以传入多个对象,这样传入的变形器都能够生效
Glide.with(this).load(url).transform(new CircleTransform(this),new CornersTransform(this,50)).into(iv1);
5.三方库
如果你觉得自己自定义transform比较困难,或者你想学习别人的图片处理方法,可以在试一试github上的这个三方库
Glide Transformations
https://github.com/wasabeef/glide-transformations
效果(支持圆角,高斯模糊等)
热门文章
- Glide-图片的压缩
- Glide-内存缓存与磁盘缓存
- Glide-自定义缓存
- Glide-入门教程
- Okhttputils终极封装
- FaceBook推出的调试神器
- Android代码优化工具
3 0
- Glide-图片预处理(圆角,高斯模糊等)
- glide实现高斯模糊图片
- Glide框架高斯模糊图片处理
- 使用Glide显示圆图圆角图,高斯模糊图等,超简单
- Glide结合高斯模糊使用
- Android 关于Glide的拓展(高斯模糊、加载监听、圆角图片)
- Android 关于Glide的拓展(高斯模糊、加载监听、圆角图片)
- 图片高斯模糊
- 图片高斯模糊
- 高斯图片模糊
- iOS 图片模糊效果(高斯模糊)
- 实现图片模糊,高斯模糊
- iOS 图片高斯模糊
- android 图片高斯模糊
- 图片的高斯模糊
- android 图片高斯模糊
- Android图片高斯模糊
- java 高斯模糊 图片
- uC/OS的消息邮箱使用经验
- SharedPreferences存储学习笔记
- C++宏定义详解
- Android图片色彩处理ColorMatrix
- Appium学习记录01
- Glide-图片预处理(圆角,高斯模糊等)
- Sevlet篇之HttpServlet 请求 回应详解
- PHP:微信获取token,openid
- flume-ng负载均衡load-balance、failover集群搭建
- 网点推广策划方案
- 【PAT】1018. Public Bike Management
- 【SpringBoot系列】SpringBoot注解详解
- Unity结合C++开发服务器实现多人游戏(三)
- BOL的使用例子