在android中显示本地图像的最有效方法

时间:2013-12-02 16:00:49

标签: android image performance bitmap inputstream

我目前正在开发类似应用的杂志。由于有一个放大选项(原始来源的150%,200%,250%),我宁愿不缩小图像。但是,当我尝试解码图像时,应用程序将强制重新启动,因为内存不足。有什么建议可以解决这个问题吗?

图像是本地的(SD卡),可以在任何方法中检索,但最终需要是一个位图,因为我使用像cavans.drawbitmap这样的东西来显示它。我试过,输入流 - >字节,输入流 - >位图等...但是有没有最有效的方法或至少 我可以肯定应用程序不强制重启/关闭?感谢

 try {
            InputStream is = (InputStream) new URL(url).getContent();
            try {
                return BitmapFactory.decodeStream(is);
            } finally {
                is.close();                    
            }
        } catch (Exception e) {
            return BitmapFactory.decodeResource(context.getResources(), defaultDrawable);


   }

2 个答案:

答案 0 :(得分:1)

你应该考虑使用nostra's image loader,它可以非常有效地处理内存,你可以指定很多配置文件,即时使用它,以及它对大图像的工作效果还不错

答案 1 :(得分:1)

这就是smartImageView(通过loopj - 你可以在http://loopj.com/上找到他)用来从驱动器/ sd中检索文件。

private Bitmap getBitmapFromDisk(String imgID) {
    Bitmap bitmap = null;
    if(diskCacheEnabled){
        String filePath = getFilePath(imgID);
        File file = new File(filePath);
        if(file.exists()) {
            bitmap = BitmapFactory.decodeFile(filePath);
        }
    }
    return bitmap;
}