今天分享下Glide加載圖片的番外篇,獲取圖片的寬高;
如果是本地圖片的話,我們可以用BitmapFactory獲取到圖片的寬高,下面上代碼
public static int getImageWidth(String pathUrl) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile(pathUrl, options); return options.outWidth;//options.outHeight; }
但是我們要是獲取網絡圖片的話,就有點困難了,因爲我們需要把圖片下載後才能知道其大小;
萬萬沒想到用Gldie不僅可以獲取本地圖片的寬高,獲取網絡圖片也是沒問題的;
Glide.with(context) .load(pathUrl) .asBitmap()//Glide返回一個Bitmap對象 .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) { bitmap.getWidth() bitmap.getHeight() } });
這樣我們就可以直接獲取網絡圖片的寬高了,這裏我必須吐槽下iOS的開發小夥伴,他們找不到獲取網絡圖片的方法就非要我們在上傳圖片的時候加上圖片的寬高,真心不地道啊;
其實我們只有上面的方法其實不是很好用,這裏我封裝了一個接口直接返回圖片的寬高,很方便;
public static void getImageWidHeig(Context context, String pathUrl, GetImageData data) { //獲取圖片真正的寬高 Glide.with(context) .load(pathUrl) .asBitmap()//Glide返回一個Bitmap對象 .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) { data.sendData(bitmap.getWidth(), bitmap.getHeight()); } }); } public interface GetImageData { void sendData(int width, int height); }
希望有對有需要的朋友有所幫助