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/n/138208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GZRBGZRB
上一篇 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

发表回复

登录后才能评论