android - 优化使用 BitmapFactory.Options.inSampleSize 以提高速度

标签 android bitmap bitmapfactory

感谢 Schermvlieger 询问 this anddev.org 上的问题,

我只是将他的问题复制给 SO,因为没有人在其他网站上回复,我也面临同样的问题。

我想知道在显示图像的速度方面,BitmapFactory.Options.inSampleSize 的最佳用途是什么。
文档提到使用 2 的幂的值,所以我正在使用 2、4、8、16 等。

我想知道的事情是:

  1. 我应该重新采样到仍然大于屏幕分辨率的最小尺寸,还是应该缩小到刚好足以避免 OutOfMemoryError 的尺寸?
  2. 如何计算在不耗尽内存的情况下仍可显示的图像的最大尺寸?图像的颜色深度以及显示的深度是否也起作用?
  3. 通过两种机制显示图像是否有效(BitmapFactory 用于大文件,setImageURI() 用于较小的文件)我正在使用 ImageSwitcher 顺便说一句。
  4. 是否有助于在应用程序开始时创建 BitmapBitmapFactory.OptionsinTempStorage 或仅在运行中创建它们,什么时候需要?

最佳答案

您应该始终尝试加载和预缩放图像,以使它们尽可能接近最终显示的尺寸。在绘图时缩放图像非常昂贵,应该不惜一切代价避免。

考虑到图像的内存成本,是的,颜色深度起着非常重要的作用。 ALPHA_8 格式的图像每个像素使用 1 个字节,RGB_565 或 ARGB_4444 格式的图像每个像素使用 2 个字节,ARGB_8888 格式的图像每个像素使用 4 个字节。显示的深度根本无关紧要。您应始终尝试使用 ARGB_8888 以获得最佳质量,但如果您的图像不透明,565 就足够了。

关于android - 优化使用 BitmapFactory.Options.inSampleSize 以提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825214/

相关文章:

java - PDF 文件无法使用类加载器打开

android - Android是否支持HLS Adaptive Bitrate Streaming

路径中的 Android 位图

java - Android 将一组位图合并为一个位图

java - Android BitmapFactory.decodeFile skia 错误

android - BitmapFactory.Options.outHeight/outWidth 的单位

android - 进程意外退出。 AAPT2 aapt2-3.4.2-5326820-windows 守护进程 #0 : Daemon startup failed problem

java - MPAndroidChart - X 轴上的动态日期标签

java - 将 OpenCV mat 转换为 Android 位图

android - 如何获取专辑和艺术家信息。我想知道这段代码有什么作用?