我正在使用以下代码从 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/