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

Android  小知识  2022年4月14日 pm7:12发布3年前 (2022)更新 91es.com站长
107 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

[代码片段]获取Sdcard或者U盘的磁盘大小,空闲大小等

前言代码功能:获取Sdcard或者U盘的磁盘大小,空闲大小等。好记性不如烂笔头正文存在单位转换 /** * 磁盘单位转换 * * @param size * @return */ public static String u...

常见的文件头或文件尾十六进制表示

前言最近在加载图片时,由于需要对不同图片使用不同的加载方式,因此需要通过判断图片的类型进行条用不同的接口。因此摘抄于此,以便查阅。正文下面的文件头或文件尾都是用十六进制表示的。JPEG (jpg)文件头:FFD8FF文件尾:FFD9PNG (png)文件头:89504E47文件尾...

余光中:月光光

月光光,月是冰过的砒霜月如砒,月如霜落在谁的伤口上?恐月症和恋月狂迸发的季节,月光光幽灵的太阳,太阳的幽灵死星脸上回光的反映恋月狂和恐月症祟着猫,祟着海祟着苍白的美妇人 太阴下,夜是死亡的边境偷渡梦,偷渡云现代远,古代近恐月症和恋月狂太阳的膺币,铸两面侧像&...

自定义SeekBar样式

前言简单记录一下使用shape定制Seekbar样式。正文这里主要在参考文章末尾连接修改的。谢谢。自定义thumb/res/drawable/seek_bar_thumb.xml<?xml version="1.0" encoding="utf-8"?><shape...

个人常用ADB命令总结

获取Android系统版本adb shell getprop ro.build.version.release获取IP地址adb shell ifconfig | grep Mask获取屏幕密度adb shell wm density//修改density 后面直接带值即可ad...

Android之Back键和HOME键拦截处理

一、拦截BACK键一般的应用有两种方法可以获取,当然你也可以修改Framework层代码进行拦截,但这个真的没必要修改。方法1、重写Activity的onKeyDown方法@Overridepublic boolean onKeyDown(int keyCode, KeyEvent...