android - 位图大小远大于从中加载它的文件大小

标签 android

我正在使用以下代码从 android 中的图像文件中检索位图:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);

然而,位图的大小是文件大小的两倍多。例如,对于大小为 520kb 的文件,位图大小约为 1.3MB。有什么方法可以获得与文件大小相同的位图?

最佳答案

位图大小是未经压缩的纯内存数据。您可以使用每个像素 4 个字节(根据您的设置)来计算大小。

您的文件可能是 jpg 等压缩格式。如果不进行压缩,它将占用相同的空间。

位图之所以在内存中保持未压缩状态,基本上是性能问题。您可以以未压缩的方式更快地读取和使用数据。例如,如果您想查看特定像素的颜色,则需要先解压缩数据。这需要时间,您检查的像素越多,花费的时间就越多。

从存储中读取文件时,与完整的读取过程相比,解压缩所花费的时间可以忽略不计。因此,与“按需”解压缩相比,您不会对性能产生太大影响。

关于android - 位图大小远大于从中加载它的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26585073/

相关文章:

android - 如何在有许多 IntentService 正在运行时停止一个 IntentService

android - 为什么 Android TV 应用程序的 Web View 分辨率较低

android - Google Play - 无法安装。再试一次,如果仍然不起作用,请参阅解决问题的常用方法

android - Lua 可以单独用于应用程序开发吗?

android - Android build.gradle 中的 proguard-android-optimize.txt 与 proguard-android.txt

android - AsyncTask 与 Activity.runOnUiThread() 与 Handler.post()

Windows 7 Pro 64 位下的 Android SDK 设置

Android - 创建带有图像的对话框似乎在对话框顶部放置了一个黑条

android - uriString 空指针错误

android - 在内部存储与外部存储中存储应用程序图像