使用android位图时内存不足
我试图通过传递图像的url来获取inputstream,但当我请求了更多图像时,它会说内存不足,有时服务器会重新启动使用android位图时内存不足,android,bitmap,Android,Bitmap,我试图通过传递图像的url来获取inputstream,但当我请求了更多图像时,它会说内存不足,有时服务器会重新启动 public InputStream getBitmap(String imagePath, int THUMBSIZE ){ Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(imagePath), THUMBSIZE, THUMBSIZE);
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,以减少内存的使用。只需阅读上面答案中的文档链接