Android利用Glide获取图片真正的宽高的实例

2020-10-22 10:28:37 浏览数 (3)

前言

有时候需要获取网络图片的宽高来设置图片显示的大小,很多人会直接利用Glide的加载监听去拿图片的宽高,但是这样拿到的不是图片真正的宽高,而是图片显示在ImageView后的宽高。如下:

代码语言:javascript复制
    //获取图片显示在ImageView后的宽高
    Glide.with(this)
        .load(imgUrl)
        .asBitmap()//强制Glide返回一个Bitmap对象
        .listener(new RequestListener<String, Bitmap () {
          @Override
          public boolean onException(Exception e, String model, Target<Bitmap  target, boolean isFirstResource) {
            Log.d(TAG, "onException "   e.toString());
            return false;
          }

          @Override
          public boolean onResourceReady(Bitmap bitmap, String model, Target<Bitmap  target, boolean isFromMemoryCache, boolean isFirstResource) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            Log.d(TAG, "width2 "   width); //400px
            Log.d(TAG, "height2 "   height); //400px
            return false;
          }
        }).into(mIv_img);

想要拿到图片真正的宽高,应该利用Glide的Target。如下:

代码语言:javascript复制
    //获取图片真正的宽高
    Glide.with(this)
        .load(imgUrl)
        .asBitmap()//强制Glide返回一个Bitmap对象
        .into(new SimpleTarget<Bitmap () {
          @Override
          public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap  glideAnimation) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            Log.d(TAG, "width "   width); //200px
            Log.d(TAG, "height "   height); //200px
          }
        });

完整代码

MainActivity.java

代码语言:javascript复制
public class MainActivity extends AppCompatActivity {

  private ImageView mIv_img;
  String imgUrl = "https://img.yuanmabao.com/zijie/pic/2020/10/22/dyfempqtlrg.html";
  private String TAG = this.getClass().getSimpleName();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mIv_img = (ImageView) findViewById(R.id.iv_img);

    //获取图片真正的宽高
    Glide.with(this)
        .load(imgUrl)
        .asBitmap()//强制Glide返回一个Bitmap对象
        .into(new SimpleTarget<Bitmap () {
          @Override
          public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap  glideAnimation) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            Log.d(TAG, "width "   width); //200px
            Log.d(TAG, "height "   height); //200px
          }
        });

    //获取图片显示在ImageView后的宽高
    Glide.with(this)
        .load(imgUrl)
        .asBitmap()//强制Glide返回一个Bitmap对象
        .listener(new RequestListener<String, Bitmap () {
          @Override
          public boolean onException(Exception e, String model, Target<Bitmap  target, boolean isFirstResource) {
            Log.d(TAG, "onException "   e.toString());
            return false;
          }

          @Override
          public boolean onResourceReady(Bitmap bitmap, String model, Target<Bitmap  target, boolean isFromMemoryCache, boolean isFirstResource) {
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            Log.d(TAG, "width2 "   width); //400px
            Log.d(TAG, "height2 "   height); //400px
            return false;
          }
        }).into(mIv_img);
  }

}

activity_main.xml

代码语言:javascript复制
<?xml version="1.0" encoding="utf-8"? 
<RelativeLayout
  android:id="@ id/activity_main"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" 

  <ImageView
    android:id="@ id/iv_img"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_centerInParent="true"
    android:scaleType="centerCrop"
    android:src="@mipmap/ic_launcher"/ 

</RelativeLayout 

以上就是本文的全部内容,希望对大家的学习有所帮助。

0 人点赞