Android:图片不加载到内存获取图片的大小
2015-11-06 16:48
295 查看
在显示图片的时候往往图片大小并不合适我们手机屏幕大小,我们一般都会对图片进行压缩修改,达到节省内存的目的。
那么我们可以怎样获取图片大小呢?
我们可以使用以上两种方法,分别适用于获取sd卡上某个位置图片的bitmap对象,以及适合获取app内部资源图片的bitmap对象。(除此之外还有一堆获取bitmap对象的方法这里不一一列举)
再根据所获取得到的对象
慢着~这真的可以吗?以上方法都是把图片给加载到内存之后再获取图片的宽和高的~这是要先加载到内存里获取图片宽高,然后再根据宽高裁剪图片,再把裁剪好的图片加载一次到内存,最后显示出来的节奏吗?这分明是在浪费内存而不是节约内存啊~而且有些图片过大,直接加载到内存里会导致oom~这也是要经过裁剪再加载到内存里面的原因~
好吧此路不通~另外还有方法~:
设置的方法就是把一个Options对象new出来然后设置它的inJustDecodeBounds为true,最后传到decodeFile的第二个参数里面就可以了(decodeResource也有对应的重载)
然后再根据Options对象获取该图的宽和高~~
那么我们可以怎样获取图片大小呢?
Bitmap bitmap=BitmapFactory.decodeFile(""); Bitmap bitmap=BitmapFactory.decodeResource(res, id);
我们可以使用以上两种方法,分别适用于获取sd卡上某个位置图片的bitmap对象,以及适合获取app内部资源图片的bitmap对象。(除此之外还有一堆获取bitmap对象的方法这里不一一列举)
再根据所获取得到的对象
bitmap.getWidth(); bitmap.getHeight();分别获取宽和高~这样就可以了~~
慢着~这真的可以吗?以上方法都是把图片给加载到内存之后再获取图片的宽和高的~这是要先加载到内存里获取图片宽高,然后再根据宽高裁剪图片,再把裁剪好的图片加载一次到内存,最后显示出来的节奏吗?这分明是在浪费内存而不是节约内存啊~而且有些图片过大,直接加载到内存里会导致oom~这也是要经过裁剪再加载到内存里面的原因~
好吧此路不通~另外还有方法~:
BitmapFactory.Options op=new Options(); op.inJustDecodeBounds=true; BitmapFactory.decodeFile("", op);decodeFile方法还有另外一个重载,经过这个方法传进去的Options我们可以设定只读取该图片的头信息而不解析该图~
设置的方法就是把一个Options对象new出来然后设置它的inJustDecodeBounds为true,最后传到decodeFile的第二个参数里面就可以了(decodeResource也有对应的重载)
然后再根据Options对象获取该图的宽和高~~
op.outWidth; op.outHeight;
相关文章推荐
- Android Fragment---执行Fragment事务
- 使用Android Studio开发J2SE项目方法
- android_ant_library 多个library编译
- Android Studio 获取数字签名信息
- Android 内存溢出解决方案(OOM) 整理总结
- Android深入浅出之Binder机制
- Android开发手记(23) Notification
- Android LayoutInflater详解
- Android——SharedPreferences
- Android Tip 之倒计时功能
- android sdk
- Android插件-Android Holo Colors Generator
- aapt.exe无法停止,android aapt 报错Type Error executing aapt: Return code -1073741819
- Android插件—Android Drawable Importer
- [Android基础]Intent
- android编程实现为程序创建快捷方式的方法
- android camera常用配置总结
- android触控事件
- AndroidStudio下加入百度地图的使用(四)——路线规划
- android 之输入法