Android之获取图片高宽方法的简单记录

Android  小知识  2022年4月14日 pm7:12发布3年前 (2022)更新 城堡大人
132 0 0

前言

本文非原创,大佬的基础上进行修改和调试,下面三种方式我都测试过。感谢大佬们分享。

好记性不如烂笔头

总结

  1. 如果只获取高宽,推荐使用BitmapFactory.Options
  2. 如果要加载图片和获取高宽,推荐使用Glide
  3. 如果只是加载jpg图片,可以考虑ExifInterface,否则不推荐

正文

下面分别简单介绍一下 三种方式

使用BitmapFactory.Options

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; //不进行解码标志
BitmapFactory.decodeFile(path, options);
options.inJustDecodeBounds = false;
int width = options.outWidth;
int height = options.outHeight;

使用Glide

需要使用开源框架Glide

Glide.with(getActivity()).load(mImageUrl).asBitmap()
        .priority(Priority.LOW)
        .diskCacheStrategy(DiskCacheStrategy.RESULT)
        .into(new SimpleTarget<Bitmap>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
            @Override
            public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
                int imageWidth = bitmap.getWidth();
                int imageHeight = bitmap.getHeight();
                mPhotoView.setImageBitmap(bitmap);
            }

            @Override
            public void onLoadFailed(Exception e, Drawable errorDrawable) {
                super.onLoadFailed(e, errorDrawable);
            }
        });

对图片格式没有特别的限制,而且还支持大图和长图的显示。

使用ExifInterface

try {
    ExifInterface exifInterface = new ExifInterface(path);
    int rotation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
    int width = exifInterface.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0);
    int height = exifInterface.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0);
    // 图片被旋转90或者270,使用时候将widthheight换下
    if (rotation == ExifInterface.ORIENTATION_ROTATE_90 || rotation == ExifInterface.ORIENTATION_ROTATE_270) {

    } else {

    }
} catch (Exception e) {
    e.printStackTrace();
}

测试中发现这个对jpg格式的图片ok,对png或gif格式的的图片不太友好。

不推荐使用此方式。

参考文章

  1. Android获得图片宽高的三种方法
  2. Glide加载大图长图

 历史上的今天

  1. 2023: ListView和GridView替换滑动条图片(0条评论)
  2. 2020: 萧红:荒凉的院子(0条评论)
  3. 2019: 使用sqlite3命令(0条评论)
  4. 2019: AudioTrack简单简介之三:爆音(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

海子:以梦为马

我要做远方的忠诚的儿子和物质的短暂情人和所有以梦为马的诗人一样我不得不和烈士和小丑走在同一道路上万人都要将火熄灭我一人独将此火高高举起此火为大开花落英于神圣的祖国和所有以梦为马的诗人一样我藉此火得度一生的茫茫黑夜此火为大祖国的语言和乱石投筑的梁山城寨以梦为土的敦煌——那七...

MediaPlayer源码介绍3

前言我们继续介绍MediaPlayer的源码,继《MediaPlayer源码介绍2》和《mediaserver的启动》后,MediaPlayer也进入了MediaPlayerService的接口调用中。今天我们继续以setDataSource为例,看看其在MediaPlayerService的...

张枣:镜中

只要想起一生中后悔的事梅花便落了下来 比如看她游泳到河的另一岸比如登上一株松木梯子危险的事固然美丽 不如看她骑马归来面颊温暖羞涩。低下头,回答着皇帝 一面镜子永远等候她让她坐到镜中常坐的地方望着窗外,只要想起一生中后悔的事梅花便落满了南山

Settings中开发者模式的影藏和显示

涉及目录:/SettingsMainActivity/src/com/android/settings/SettingsActivity.java/SettingsMainActivity/src/com/android/settings/DeviceInfoSettings.java...

WordPress博客搬家教程

这是建站的必备知识,我们需要怎么进行网络搬家,如果你不会,请仔细研读。这一篇文章写得最简单最明白的。第一步:备份网站根目录下所有文件并转移到新主机。这一步主要是把原来的空间中的网站程序、图片等资源下载备份,并上传到新的主机空间。如果原来空间支持在线压缩,并且新的空间支持解压缩,那么建议...

Android之获取图片高宽方法的简单记录

前言本文非原创,大佬的基础上进行修改和调试,下面三种方式我都测试过。感谢大佬们分享。好记性不如烂笔头总结如果只获取高宽,推荐使用BitmapFactory.Options如果要加载图片和获取高宽,推荐使用Glide如果只是加载jpg图片,可以考虑ExifInterface,否则不推荐...