0

我试图通过传递图像的 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);
4

2 回答 2

1

好好看看这个文档:文档

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

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

于 2013-11-11T11:07:38.260 回答
0

欢迎来到名为的错误

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

当您从 url 加载高分辨率重图像或图像时会发生这种情况。

Android 培训课程“高效显示位图”或尝试“通用图像加载器”为理解和处理异常提供了一些重要信息。

于 2013-11-11T11:09:38.793 回答