java - 大小大于 2.3MB 的 png 文件出现 OOM 错误

标签 java android bitmap

我的应用程序在打开大小为 2.5MB 的 .png 文件时崩溃。该文件具有高分辨率。我收到 OOM 错误。

导致错误的代码是:

long sizeInMB = imageFile.length()/(1024*1024);
if(sizeInMB > 2){
    int inSampleSize = (int) (sizeInMB/5);
    if(sizeInMB%5 > 0){
        inSampleSize++;
    }
    Options opts = new Options();
    opts.inSampleSize=inSampleSize;
    bitmap = BitmapFactory.decodeFile(filePath, opts);    
}else{
    bitmap = BitmapFactory.decodeFile(filePath);
} 

bitmap = BitmapFactory.decodeFile(filePath) 导致错误。

任何帮助将不胜感激,

提前致谢

最佳答案

因为在您的情况下,2MB 位图可能需要大约 10MB 内存

引用this关于如何加载大位图

关于java - 大小大于 2.3MB 的 png 文件出现 OOM 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14766176/

相关文章:

android - 下载图像并将其存储在 ContentProvider 中

AMD 64 位平台上的 java.lang.UnsatisfiedLinkError : C:\. ..\xxx.dll : Can't load this . dll(机器代码 = 0xbd)

java - 为什么此代码会导致 "illegal start of expression"异常?

android - 无法为适用于 Android 平台的 AWS C++ SDK 构建库

android - 分割和重新加入位图

android - 如何只绘制可能较大和/或缩放的 SVG 的一部分?

java - SocketCluster - 无法从 Android 应用程序连接到服务器 - 连接被拒绝

java - 如何使用流将 List<Entry> 转换为值是列表的 Map?

java - Android 菜单未出现在 Android Studio 的 "Tools"菜单下。怎么提出来呢?

android - 如何让我的图像只出现在我的按钮上,而不是重叠