代码之家  ›  专栏  ›  技术社区  ›  UMAR-MOBITSOLUTIONS

从Internet加载图像时,位图大小超过了VM预算?

  •  0
  • UMAR-MOBITSOLUTIONS  · 技术社区  · 14 年前

    我正试图在ImageView中显示来自Internet的图像。

    这就产生了以下错误,任何人都会引导我在这里犯什么错误

    公共位图displayLiveImage(字符串imagesrc) { 位图BM; 尝试{

                                 URL aURL = new URL(ImageSrc);  
                                 URLConnection conn = aURL.openConnection(); 
    
                                 conn.connect();  
                                 InputStream is = null;
                                 try
                                 {
                                     is= conn.getInputStream();  
                                 }catch(IOException e)
                                 {
                                     return null;
                                 }
    
                                 BufferedInputStream bis = new BufferedInputStream(is);  
    
                                 bm = BitmapFactory.decodeStream(bis);  
                                 bis.close();  
                                 is.close();  
    
                            } catch (IOException e) {  
                                return null;
                            }  
    
                            return  bm;
    
        }
    

    洛卡特

    11-12 21:45:22.509: ERROR/AndroidRuntime(7118): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    11-12 21:45:22.509: 
    
    ERROR/AndroidRuntime(7118):     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    11-12 21:45:22.509: 
    
    ERROR/AndroidRuntime(7118):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:476)
    11-12 21:45:22.509: 
    
    ERROR/AndroidRuntime(7118):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:537)
    11-12 21:45:22.509: 
    
    ERROR/AndroidRuntime(7118):     at com.Finditnear.FindItNearActivityWithoutMenu.DisplayLiveImage
    
    (FindItNearActivityWithoutMenu.java:149)
    11-12 21:45:22.509: ERROR/AndroidRuntime(7118):     at com.Finditnear.ViewSingleImage$1.run
    
    (ViewSingleImage.java:88)
    

    任何帮助都将不胜感激。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Community Dai    7 年前

    您要加载的图像有多大?如果这将导致一个大位图,你将耗尽内存,因为Android只为你的应用程序提供有限的内存(我认为在2.2设备上是16MB或24MB)。如果是大图像,请检查 downsampling code on this post