使用android位图时内存不足

时间:2013-11-11 11:03:11

标签: android bitmap

我试图通过传递图像的url来获取输入流,但是当我有更多请求的图像时,它会说内存不足,有时服务器重新启动。

public InputStream getBitmap(String imagePath, int THUMBSIZE ){
        Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(imagePath), THUMBSIZE, THUMBSIZE);
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
        ThumbImage.compress(CompressFormat.PNG, 0 , bos); 
        ThumbImage.recycle();
        byte[] bitmapdata = bos.toByteArray();
        InputStream bs = new ByteArrayInputStream(bitmapdata);  
        return bs;
    }

这是我使用上面的方法,为什么它会给出内存错误?

String query_file = parameters.get("fname");
String Mime = get_mime(query_file);
String original_path = root.getAbsolutePath()+query_file;                   
InputStream br = this.getBitmap(original_path, 96);

2 个答案:

答案 0 :(得分:1)

好好看看这篇文章:Documentation

  

本课程将引导您通过在内存中加载较小的子采样版本来解码大型位图,而不会超出每个应用程序内存限制。

将图像缩放到所需的大小并分配内存。

答案 1 :(得分:0)

欢迎来到名为

的错误
java.lang.OutOfMemoryError: bitmap size exceeds VM budget

当你从网址加载高分辨率的重图像时会发生这种情况。

Android培训课程“Displaying Bitmaps Efficiently”或尝试“Universal Image Loader”,为理解和处理例外提供了一些很好的信息。