当前位置:网站首页>Glide中图片处理
Glide中图片处理
2022-08-02 03:27:00 【浮空over】
文章目录
一、加载本地资源
1.在清单文件中增加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.加载
其实Glide加载本地图片和加载网络图片调用的方法是一样的,唯一的区别是说加载SD卡的图片需要SD卡的权限,加载网络需要网络权限
//本地文件
File file = new File(Environment.getExternalStorageDirectory(), "xiayu.png");
//加载图片
Glide.with(this).load(file).into(iv);
一、Glide-图片预处理(圆角,高斯模糊等)
1.创建一个类继承BitmapTransformation
需要实现两个方法,其中transform方法里面能拿到bitmap对象,这里就是对图片做处理的地方
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.圆角处理
- 自定义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();
}
}
- 使用:
Glide.with(this).load(url).transform(new CornersTransform(this,50)).into(iv1);
- 使用多个transform
transform方法是不支持多次调用的,如果你调用了两次,那么第二次的会覆盖了第一次的效果
但是他有一个重载的方法可以传入多个对象,这样传入的变形器都能够生效
Glide.with(this).load(url).transform(new
CircleTransform(this),new CornersTransform(this,50)).into(iv1);
二、Glide-加载Gif和MP4
1.简单加载
Glide.with(this).load(mGifUrl).placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
2.把gif当作普通图片加载(asBitmap)
Glide.with(this).load(mGifUrl).asBitmap().placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
3.检查是否gif(asGif)
如果你希望加载的只是gif,如果不是gif就显示错误图片,那么只用加上asGif方法
Glide.with(this).load(mGifUrl).asGif().placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
4.加载本地视频缩略图
直接放file文件进去
Glide只会加载本地视频的第一帧,也就是缩略图
mVideoFile = new File(Environment.getExternalStorageDirectory(), "xiayu.mp4");
Glide.with(this).load(mVideoFile).placeholder(R.mipmap.place).error(R.mipmap.icon_photo_error).into(mIv);
边栏推荐
猜你喜欢

元宇宙是一个炒作的科幻概念,还是互联网发展的下半场?

清理c盘爆满告急,C盘清理

利用cookie获取admin权限 CTF基础题

DNS详解

A network security guinea pig's learning path - scripting of advanced usage of nmap

How to log in to Alibaba Cloud server using the admin account

The shooting range that web penetration must play - DVWA shooting range 1 (centos8.2+phpstudy installation environment)

Syncthing文件同步方案完全攻略(亲测有效)

重点考:从债劵的角度来看交易性金融资产

mysql 原生语句点滴学习记录
随机推荐
Mysql创建索引
file contains vulnerabilities
考(重点理解哪些属于其他货币资金)、其他货币资金的内容、其他货币资金的账务处理(银行汇票存款、银行本票存款、信用卡存款、信用证保证金存款、存出投资款、外埠存款)
完整安装 Laravel-Admin 框架
laravel 查询数据库获取结果如何判断是否为空?
Solve the problem that the 5+APP real machine test cannot access the background (same local area network)
借贷记账法下的账户结构、借贷记账法的记账规则、借贷记账法下的账户对应关系与会计分录
关于我的数学建模~
Kotlin - 延迟初始化和密封类
hackmyvm: again walkthrough
英语每日打卡
The CTF introduction of PHP file contains
命令执行漏洞
【一句话攻略】彻底理解JS中的回调(Callback)函数
关于我的大创、论文~
CTF entry md5
在 UUP dump 被墙的情况下如何用 UUP 下载 ISO 镜像
Laravel 的关联模型 及其 预加载多个关联 with使用方法
php中魔术方法详解
一分钟get:缓存穿透、缓存击穿、缓存雪崩