Glide獲取Bitmap的全方位講解

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GZRB的頭像GZRB
上一篇 2024-10-04 00:19
下一篇 2024-10-04 00:19

相關推薦

  • Redis Bitmap用法介紹

    Redis是一款高性能的內存資料庫,支持多種數據類型,其中之一便是bitmap。Redis bitmap(點陣圖)是一種用二進位位來表示元素是否在集合中的數據結構。由於使用了二進位位…

    編程 2025-04-27
  • 使用Glide實現圓角圖片展示效果

    一、Glide簡介 Glide是一個快速高效的Android上的圖片載入庫。它可以載入本地、網路、文件、Uri等多種資源,並且可以進行圖片的裁剪、變換、緩存等操作。Glide跟Pi…

    編程 2025-04-12
  • 全方位了解Glide緩存

    Glide是一個開源的圖片載入庫,非常高效和強大。它所具有的良好的緩存機制也是其中的重要特點之一,這也使得Glide比其他圖片載入庫更適合處理大量的圖片和高清晰度的圖片。在這篇文章…

    編程 2025-01-03
  • 詳解Redis的Bitmap

    一、Redis的Bitmap原理及使用場景 1、Redis的Bitmap,顧名思義,就是使用點陣圖來存儲數據,它能夠處理非常大的數據量,而且在查詢數據時速度非常快,因此在Redis中…

    編程 2024-12-31
  • c語言bitmap循環,bitmap函數

    本文目錄一覽: 1、用C語言讀取16位bmp圖片的每個像素的信息~ 2、C語言的枚舉求解的循環問題 3、關於C語言處理圖像的問題 用C語言讀取16位bmp圖片的每個像素的信息~ 沒…

    編程 2024-12-31
  • 利用Python實現Android Bitmap圖片壓縮

    一、需求分析 在移動應用開發中,圖片佔用的內存往往非常大,因此需要進行壓縮處理來降低內存佔用。而在Android系統中,常用的圖片格式是Bitmap,因此需要一種方法來對Bitma…

    編程 2024-12-15
  • Glide緩存機制詳解

    一、Glide緩存機制面試 Glide是一個強大而靈活的Android圖片載入庫,它根據你的圖片的URL、縮略圖、應用資源中的Uri以及其他可用的信息來高效地載入圖像並緩存它們。在…

    編程 2024-12-14
  • c# Bitmap詳解

    一、Bitmap簡介 Bitmap是c#中用來表示點陣圖圖像的類,它可以簡單的理解為一個由顏色點組成的點陣。Bitmap中的每一個點被稱為像素(Point),每個像素都有它的顏色和位…

    編程 2024-12-12
  • php之bitmap研究,bitmapsource

    本文目錄一覽: 1、PHP的演算法可以實現大數據分析嗎 2、PHP滑動拼圖驗證碼的圖片是怎樣生成的 3、Bitmap 究竟佔多大內存 4、怎樣將bitmap添加到mysql資料庫中 …

    編程 2024-12-12
  • 如何保存Bitmap圖片到本地

    Bitmap是一種常見的點陣圖格式,通常在Android或C#等編程語言中使用。我們有時需要將Bitmap保存到本地以備以後使用,或者將圖片上傳到互聯網等。本文將從多個方面探討如何將…

    編程 2024-12-12

發表回復

登錄後才能評論