总结下Android中Bitmap的应用方式
2016-07-03 02:08
405 查看
同一张图片,放在不同目录下,会生成不同大小的Bitmap
Bitmap的长度和宽度越大,占用的内存就越大
图片在硬盘上占用的大小,与在内存中占用的大小完全不一样
Bitmap的一般用法:
1. 使用
inSampleSize
这个方法主要用在图片资源本身较大,或者适当地采样并不会影响视觉效果的条件下,这时候我们输出地目标可能相对较小,对图片分辨率、大小要求不是非常的严格。
2.使用矩阵
小图要放大进行使用的话就用矩阵。
bb38
图就是放大以后的效果了,不过占用的内存却仍然是我们采样出来的大小。
BitMap获取图片大小的代码:
Bitmap的长度和宽度越大,占用的内存就越大
图片在硬盘上占用的大小,与在内存中占用的大小完全不一样
存放在硬盘上的图片文件,会根据各自的压缩规则进行压缩,比如Jpeg这种有损压缩的图片格式,最常使用可变字长编码的哈弗曼编码,会使用哈弗曼树,也就是最优二叉树,根据某些数据出现的频率对数据段编码,从而减少占用的硬盘大小
Bitmap的一般用法:
1. 使用
inSampleSize
这个方法主要用在图片资源本身较大,或者适当地采样并不会影响视觉效果的条件下,这时候我们输出地目标可能相对较小,对图片分辨率、大小要求不是非常的严格。
BitmapFactory.Options options = new Options(); options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, options);
2.使用矩阵
小图要放大进行使用的话就用矩阵。
Matrix matrix = new Matrix(); matrix.preScale(2, 2, 0f, 0f); //如果使用直接替换矩阵的话,在Nexus6 5.1.1上必须关闭硬件加速 canvas.concat(matrix); canvas.drawBitmap(bitmap, 0,0, paint);这样,绘制出来的
bb38
图就是放大以后的效果了,不过占用的内存却仍然是我们采样出来的大小。
Matrix matrix = new Matrix(); matrix.postScale(2, 2, 0, 0); imageView.setImageMatrix(matrix); imageView.setScaleType(ScaleType.MATRIX); imageView.setImageBitmap(bitmap);
BitMap获取图片大小的代码:
在Android API(12)之前的版本和后来的版本是不一样: public long getBitmapsize(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { return bitmap.getByteCount(); } // Pre HC-MR1 return bitmap.getRowBytes() * bitmap.getHeight(); }
相关文章推荐
- Android Adapter的几个方法
- android studio小问题
- Andorid 方法数超过64K的问题
- Android中Handler的使用方法及实例(基础回顾)
- 【Android系统】自定制View
- Android学习第一天笔记
- Android开发学习之使用ViewPager+PagerTabStrip制作可滑动的Tab
- 如何构建安全的Android应用
- 创建Music播放器demo
- 详解Android Data Binding (上)
- android-open-project
- 百度定位API
- Android Studio的编译异常
- Android之Fragment的使用(二)
- 【Android官方文档】翻译Android官方文档-Fragment(四)
- Android MVVM ViewModel
- android-----ArrayAdapter、SimpleAdapter和BaseAdapter
- Android使用VideoView播放live555服务端的RTSP视频流demo
- Android 中使用过圆角照片控件
- Android使用内部存储存储文件