Glide获取网络图片和本地图片的宽高

今天分享下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() {
            @Override
            public void onResourceReady(Bitmap bitmap, GlideAnimation 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() {
                @Override
                public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {
                    data.sendData(bitmap.getWidth(), bitmap.getHeight());
                }
            });
}

public interface GetImageData {
    void sendData(int width, int height);
}

希望有对有需要的朋友有所帮助

你可能感兴趣的:(Glide)