Android读取指定路径的位图(FR:徐海涛)
来源:互联网 发布:软件推广ppt 编辑:程序博客网 时间:2024/05/17 07:15
public Bitmap revitionImageSize(String path) throws IOException { BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(path))); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; //设置True只解码图片的Bounds BitmapFactory.decodeStream(in, null, options); in.close(); int i = 0; Bitmap bitmap = null; while (true) { if ((options.outWidth >> i <= 256) && (options.outHeight >> i <= 256)) { in = new BufferedInputStream(new FileInputStream(new File(path))); options.inSampleSize = (int)Math.pow(2.0D, i); //表示2的i次方 options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(in, null, options); break; } i += 1; } return bitmap; }
有些人会问 ,知道一个图片的SD卡保存路径,搞一个输入流,然后抽取数据,最后关闭流不就OK啦吗,为啥搞得这么复杂
其实主要原因是在:
BitmapFactory.decodeStream(Stringpath)方法返回Bitmap时,遇到大一点的图片,经常会遇到OOM(Out OfMemoery)
BitmapFactory.Options 类, 定义了以何种方式将图片读到内存
inJustDecodeBounds 如果设置为True,BitmapFactory.decodeStream就不会直接返回一个位图,而只是返回位图的宽和高,这样就不会占用太高的内存,具体的宽和高获取如下:
options.outWidth和options.outHeight
inSampleSize 可以根据实际的宽高和期望的宽高来计算这个值,如果inSampleSize = 8,那么图片就变成原来的1/8
FR:海涛高软(QQ技术交流群:386476712)
1 0
- Android读取指定路径的位图(FR:徐海涛)
- Android 仿微信发朋友圈照片选择模块(FR:徐海涛)
- Android 读取指定路径文件
- c#读取指定路径的配置文件
- matlab读取指定路径下的图像
- opencv读取指定路径下的图片
- c#读取指定路径的配置文件
- android指定数据库的路径
- android指定数据库的路径
- Android下一种打开并读取指定路径文件内容的方法
- 读取位图的类
- 单色位图的读取
- Android新组件RecyclerView的简单使用_项海涛
- 何海涛的博客
- 读取指定文件夹下的所有图片之相对路径
- 读取指定路径的文件及子文件夹列表
- 读取指定文件夹下的所有图片之相对路径
- FileInputStream读取properties系统找不到指定的路径
- VC.PE.天使等解释
- java向kafka批量均匀发送数据的方法
- C++实现多态原理探究
- 单词统计案例
- 【t101】小明搬家
- Android读取指定路径的位图(FR:徐海涛)
- Follow me!百万奖金由你拿 | 精准资助机器学习(三)
- Basic Data Structure hdu 5929
- Python批量Excel文件数据导入SQLite数据库的优化方案
- 深入理解子元素的width与父元素的width关系
- java中string.format与stringbuilder的性能比较
- 寒假21:整数的拆分
- 游戏服务端之C++封装Mysql
- C++Student类