您的位置:首页 > 其它

BitmapFactor.decodeByteArray方法导致OOM

2016-09-02 15:56 656 查看
当我们将一个多屏大小的base64图片转换成Bitmap进行操作时,使用BitmapFactory.decodeByteArray(data, 0, data.length)非常容易OOM,BitmapFactory.decodeByteArray(data,
offset, data.length)三个参数的意义分别是:data为byte类型的资源数据,offset为位移量,一般为0,最后一个是资源数据的数组的长度,同时,该方法非常的消耗内存,所以我们采用如下的方式对图片进行处理:

[java] view
plain copy

public static Bitmap byteToBitmap(byte[] imgByte) {  

        InputStream input = null;  

        Bitmap bitmap = null;  

        BitmapFactory.Options options = new BitmapFactory.Options();  

        options.inSampleSize = 8;  

        input = new ByteArrayInputStream(imgByte);  

        SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(  

                input, null, options));  

        bitmap = (Bitmap) softRef.get();  

        if (imgByte != null) {  

            imgByte = null;  

        }  

  

        try {  

            if (input != null) {  

                input.close();  

            }  

        } catch (IOException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

        return bitmap;  

    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: