一、Glide獲取Bitmap
使用Glide獲取Bitmap是非常容易的,只需要通過Glide.with().asBitmap()方法載入圖片即可:
Glide.with(context)
.load(url)
.asBitmap()
.into(new SimpleTarget() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//bitmap已經載入完成,可以對其進行操作
}
});
通過這種方式,Glide會自動幫我們將網路圖片或本地圖片轉換成Bitmap,並且會緩存該Bitmap以供下次快速載入。
二、Glide獲取圖片
除了獲取Bitmap之外,我們還可以通過Glide獲取圖片,方法與獲取Bitmap類似,只需要將asBitmap()方法換成asDrawable()即可:
Glide.with(context)
.load(url)
.asDrawable()
.into(new SimpleTarget() {
@Override
public void onResourceReady(Drawable resource, GlideAnimation glideAnimation) {
//圖片已經載入完成,可以對其進行操作
}
});
三、Glide獲取視頻第一幀
同樣地,我們可以使用Glide獲取視頻的第一幀圖像:
Glide.with(context)
.load(url)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new SimpleTarget() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//視頻第一幀圖像已經載入完成,可以對其進行操作
}
});
需要注意的是,在使用Glide獲取視頻第一幀時,最好將diskCacheStrategy()設置為ALL,這樣才能使Glide順利地獲取視頻縮略圖。
四、Glide獲取縮略圖有點慢
如果我們只需要一張圖片的縮略圖,那麼使用上述的方法可能會有點慢,因為Glide會將整張圖片載入完後再生成縮略圖。此時,我們可以使用thumbnail()方法來快速獲取縮略圖:
Glide.with(context)
.load(url)
.thumbnail(0.1f)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
//縮略圖已經載入完成,可以對其進行操作
}
});
在上述代碼中,thumbnail()方法的參數0.1f表示縮略圖大小為原圖的1/10。
五、Glide獲取圖片寬高
有時候,我們需要獲取圖片的寬高信息,以便後續的操作。這可以通過BitmapFactory.Options對象來實現:
Glide.with(context)
.load(url)
.asBitmap()
.into(new SimpleTarget() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
int width = resource.getWidth();
int height = resource.getHeight();
//獲取圖片的寬高信息
}
});
六、Glide獲取一級緩存
除了網路或本地圖片外,Glide還會緩存在內存中。Glide緩存在內存中的圖片稱為一級緩存。可以使用MemoryCacheKey類來獲取:
Glide.with(context)
.load(url)
.asBitmap()
.into(new SimpleTarget() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
MemoryCacheKey key = new MemoryCacheKey(new GlideUrl(url), EmptySignature.obtain());
Bitmap bitmap = memoryCache.get(key);
}
});
其中,memoryCache為Glide內部的一級緩存對象。如果你需要獲取一級緩存之外的緩存,可以使用DiskLruCache。
七、Glide獲取不到文件縮略圖
當我們使用Glide獲取本地圖片的縮略圖時,可能會出現獲取不到縮略圖的情況。解決方法是在placeholder()方法中設置一個空白圖像,這樣Glide會強制生成縮略圖:
Glide.with(context)
.load(new File(file))
.placeholder(R.color.transparent)
.thumbnail(0.1f)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
//縮略圖已經載入完成,可以對其進行操作
}
});
八、Glide獲取Drawable
有時候,我們只需要獲取Drawable而不是Bitmap或圖片。這可以通過asDrawable()方法來實現:
Glide.with(context)
.load(url)
.asDrawable()
.into(new SimpleTarget() {
@Override
public void onResourceReady(Drawable resource, GlideAnimation glideAnimation) {
//獲取到Drawable對象,可以對其進行操作
}
});
九、Glide獲取視頻第一幀子線程
默認情況下,Glide會在主線程中執行,如果我們需要在子線程中獲取視頻第一幀圖像,可以使用into()方法的另一個重載,指定Handler即可:
Glide.with(context)
.load(url)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new SimpleTarget() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//視頻第一幀圖像已經載入完成,可以對其進行操作
}
}, new Handler(Looper.getMainLooper()));
總結
通過本文的介紹,相信大家已經對Glide獲取Bitmap有了更深入的認識。Glide作為一款強大而易用的圖片載入庫,在Android開發中有著廣泛的應用。
原創文章,作者:GZRB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138208.html