当前位置: 代码迷 >> Android >> 请问createBit地图的有关问题
  详细解决方案

请问createBit地图的有关问题

热度:19   发布时间:2016-04-28 00:30:03.0
请教createBitmap的问题
newmap = Bitmap.createBitmap(bi, 0, 0, bitmapwidth, bitmapheight,
matrix, true);
报错java.lang.OutOfMemoryError
为嘛?
我是在一个fragment里面加载的图片
多次切换fragment之后。
就会出现这个错误。是为什么。
图片资源文件我刚进入程序就已经获得了。
------解决思路----------------------
内存溢出,切换之前把Bitmap recyle下
------解决思路----------------------
把代码贴出来
------解决思路----------------------
图片质量压缩
[java] view plaincopyprint?
/** 
     * 质量压缩方法 
     * 
     * @param image 
     * @return 
     */  
    public static Bitmap compressImage(Bitmap image) {  
  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中  
        int options = 90;  
  
        while (baos.toByteArray().length / 1024 > 100) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩  
            baos.reset(); // 重置baos即清空baos  
            image.compress(Bitmap.CompressFormat.JPEG, options, baos);// 这里压缩options%,把压缩后的数据存放到baos中  
            options -= 10;// 每次都减少10  
        }  
        ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());// 把压缩后的数据baos存放到ByteArrayInputStream中  
        Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);// 把ByteArrayInputStream数据生成图片  
        return bitmap;  
    }  
看看这个,这是一种方法,你可以找找其他的压缩图片的方法
------解决思路----------------------
              无论加载本地图片还是网络下载图片都要注意OOM异常
    做好异常处理  图片压缩  图片加载失败用另外的默认图替换  这样用户体验就比较好
     想要做到像优酷这样加载大量图片不爆内存  只能慢慢研究了
  相关解决方案