码迷,mamicode.com
首页 > 其他好文 > 详细

BitmapFactory.Options 处理OOM

时间:2016-10-08 20:30:11      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

问题颇多,百度没出来个所以然

        InputStream inputStream = MainActivity.this.getContentResolver().openInputStream(uri);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        BitmapFactory.decodeFile(uri.toString(), options);
        
        options.inJustDecodeBounds = false;
        int width = options.outWidth;
        int height = options.outHeight;

        float hh = 800f;
        float ww = 480f;
        int scale = 1;
        if (width > 600f) {
            scale = (int) (width / 600);
        } else if (height > 800f) {
            scale = (int) (height / 800);
        }
        if (scale <= 0) {
            scale = 1;
        }
        options.inSampleSize = scale;
        Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);

首先,我拿不到outwidth这些数据,这也就是说不能设置scale。

其次,decodeFile不能写作decodeStream. 否则出错。

 

步骤似乎就是这样的。

第一步:BitmapFactory.Option

设置 inJustDecodeBounds为true

第二步:BitmapFactory.decodeFile(path,option)方法

解码图片路径为一个位图。如果指定的文件名是空的,或者不能解码到一个位图,函数将返回null[空值]。

获取到outHeight(图片原始高度)和 outWidth(图片的原始宽度)

第三步:计算缩放比例,也可以不计算,直接给它设定一个值。

options.inSampleSize = "你的缩放倍数";

如果是2就是高度和宽度都是原始的一半。

第四步:设置options.inJustDecodeBounds = false;

重新读出图片

bitmap = BitmapFactory.decodeFile(path, options);

BitmapFactory.Options 处理OOM

标签:

原文地址:http://www.cnblogs.com/lyxin/p/5939717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!