我的android设备的Bitmap工厂出现OOM错误。

Out of memory on a 12582928-byte allocation.


这对我来说很奇怪。非常大这些文件本身就是平板电脑上的图片库并已下载。因此,图像的上限可能达到1.2meg jpg左右。

说出错误后,它会吐出AndroidRuntime错误日志以获取致命异常:

10-01 11:53:52.512: E/AndroidRuntime(31023): FATAL EXCEPTION: Thread-7893
10-01 11:53:52.512: E/AndroidRuntime(31023): java.lang.OutOfMemoryError
10-01 11:53:52.512: E/AndroidRuntime(31023):    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:582)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:380)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at com.bentley.cordova.plugins.ImageOps.createThumbnailForPath(ImageOps.java:43)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at com.bentley.cordova.plugins.ImageOps.execute(ImageOps.java:20)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at org.apache.cordova.api.PluginManager$1.run(PluginManager.java:192)
10-01 11:53:52.512: E/AndroidRuntime(31023):    at java.lang.Thread.run(Thread.java:856)


我确实有很多同时使用此功能处理的图像。我不认为BitMapFactory会因为运行的不同线程而过度劳累。

最佳答案

因此,图像的上限可能达到1.2meg jpg左右。


这不是真的。 32bit bitmap将需要width * height * 4个字节才能分配。请记住,在不需要位图时recycle。如果可以的话,还要对其进行下采样

关于java - Java的BitmapFactory给出了OutOfMemory异常,想要> 12mb…不知道为什么这么大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12677091/

10-09 08:01