使用android位图时内存不足

使用android位图时内存不足,android,bitmap,Android,Bitmap,我试图通过传递图像的url来获取inputstream,但当我请求了更多图像时,它会说内存不足,有时服务器会重新启动 public InputStream getBitmap(String imagePath, int THUMBSIZE ){ Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(imagePath), THUMBSIZE, THUMBSIZE);

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

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);

请仔细阅读此文档:

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


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

欢迎使用名为

java.lang.OutOfMemoryError: bitmap size exceeds VM budget
当您从url加载一个或多个高分辨率重图像时,就会发生这种情况


Android培训课程“或try”为理解和处理异常提供了一些很好的信息。

我只是想了解一下thumnails,我们可以在没有位图的情况下使用一些本地2d图形api来完成这项工作吗?刚才读到我们不能在Android中使用BuffereImage类和2d图形api,所以它只是说我们需要使用位图。我懒得读第二段,但现在我明白了,对于那些有类似问题的人。内存不足的实际原因是,当我们解码它时,我们使用大图像存储在内存中,而不是需要使用选项类,其中有一个选项应该大于1,以减少内存的使用。只需阅读上面答案中的文档链接