位图的内存不足错误

位图的内存不足错误,第1张

位图内存不足错误

当您的应用超出堆中分配的内存时,就会发生OutofMemory。位图太大,无法放入内存,即堆。在这种情况下,内存不足。您需要缩小位图,然后再使用该位图。为此,请检查下面的链接

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html。

还有一个博客@ http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html(避免内存泄漏)

 public static Bitmap depreFile(File f,int WIDTH,int HIGHT){ try {     //Depre image size     BitmapFactory.Options o = new BitmapFactory.Options();     o.inJustDepreBounds = true;     BitmapFactory.depreStream(new FileInputStream(f),null,o);     //The new size we want to scale to     final int REQUIRED_WIDTH=WIDTH;     final int REQUIRED_HIGHT=HIGHT;     //Find the correct scale value. It should be the power of 2.     int scale=1;     while(o.outWidth/scale/2>=REQUIRED_WIDTH && o.outHeight/scale/2>=REQUIRED_HIGHT)         scale*=2;     //Depre with inSampleSize     BitmapFactory.Options o2 = new BitmapFactory.Options();     o2.inSampleSize=scale;     return BitmapFactory.depreStream(new FileInputStream(f), null, o2); } catch (FileNotFoundException e) {} return null;}

引用文档

BitmapFactory类提供了几种解码方法(depreByteArray(),depreFile(),depreResource()等),用于从各种来源创建位图。根据您的图像数据源选择最合适的解码方法。这些方法尝试为构造的位图分配内存,因此很容易导致OutOfMemory异常。每种类型的解码方法都有其他签名,可让您通过BitmapFactory.Options类指定解码选项。

解码时将inJustDepreBounds属性设置为true可以避免内存分配,为位图对象返回null,但设置outWidth,outHeight和outMimeType。此技术使您可以在位图的构造(和内存分配)之前读取图像数据的尺寸和类型。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5013886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存