BitmapFactory for java提供了OutOfMemory异常,Waging>;12兆。。。不知道为什么这么大

BitmapFactory for java提供了OutOfMemory异常,Waging>;12兆。。。不知道为什么这么大,java,android,Java,Android,我的android设备的位图工厂出现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 1

我的android设备的位图工厂出现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左右

那不是真的。
32位位图
需要
width*height*4
字节才能分配。当您不需要位图时,请记住
回收
。如果可以的话,也要减少取样

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


那不是真的。
32位位图
需要
width*height*4
字节才能分配。当您不需要位图时,请记住
回收
。也可以对它进行下采样,如果你能

请考虑这样一个事实,即1.2 MB JPEG图像的位图表示可以很容易地(取决于它的压缩率)超过12 MB。 使用32位颜色时,位图至少需要宽度*高度*4个字节来表示


即使单个实例不超过12MB标记,以线程方式运行此文件可能会超过JVM分配的最大堆大小。

< P>请考虑这样一个事实:1.2 MB JPEG图像的位图表示可能很容易(取决于其压缩率)超过12 MB。

使用32位颜色时,位图至少需要宽度*高度*4个字节来表示


即使单个实例未超过12MB标记,以线程方式运行此操作也可能会超过JVM分配的最大堆大小。

请尝试下面的链接或尝试此操作。请记住,完全扩展的映像占用的存储空间比文件中存储的表单大得多。可能需要查看一些代码,甚至不知道你在做什么。但是你检查过递归吗?完成后,您是否正在释放资源?JPEG是压缩的,位图不是。alpha通道打开时,每个像素需要4个字节来存储它。对于像素矩阵,转换为3145732字节,或者大约转换为1800x1800px;如果你试图处理高清图像,这就是为什么它失败的原因。你能看看你要创建的维度吗?试试下面的链接或者试试这个。记住,完全扩展的图像比文件中存储的表单占用更多的存储空间。可能需要看一些代码,甚至不知道你在做什么。但是你检查过递归吗?完成后,您是否正在释放资源?JPEG是压缩的,位图不是。alpha通道打开时,每个像素需要4个字节来存储它。对于像素矩阵,转换为3145732字节,或者大约转换为1800x1800px;如果你试图处理高清图像,这就是为什么它失败的原因。你能看看你正在尝试创建的维度吗?线程可能是一件大事。因为一堆图像可能会变得相当大。我在想,由于图像没有真正的下采样,可能会导致问题。线程可能是一件大事。因为一堆图像可能会变得相当大。我认为,由于图像没有真正的下采样,这可能会导致问题。我在位图的结尾处进行了循环(),但它似乎不是完全的下采样,在您提到它之后,我进一步研究了它,以及它所需的数据。似乎我们尝试的是一种新的缩小方法,它不是无效的,也没有使用位图。选项对他们来说是可用的。我在位图的末尾进行了循环(),但它似乎不是完全的缩小采样,在你提到它之后,我进一步研究了它,以及它所需的数据。看起来,我们试图做的是一种新的缩小规模的方法,这并不是无效的,也没有使用位图选项。