前言
本文非原创,大佬的基础上进行修改和调试,下面三种方式我都测试过。感谢大佬们分享。
好记性不如烂笔头
总结
- 如果只获取高宽,推荐使用BitmapFactory.Options
- 如果要加载图片和获取高宽,推荐使用Glide
- 如果只是加载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,使用时候将width、height换下
if (rotation == ExifInterface.ORIENTATION_ROTATE_90 || rotation == ExifInterface.ORIENTATION_ROTATE_270) {
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
测试中发现这个对jpg格式的图片ok,对png或gif格式的的图片不太友好。
不推荐使用此方式。
参考文章
历史上的今天
暂无评论...
随机推荐
[代码片段]获取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...