最佳使用BitmapFactory.Options.inSampleSize来提高速度

Lab*_*lan 22 android bitmap bitmapfactory

感谢Schermvliegeranddev.org上提出这个问题,

我只是把他的问题复制到SO,因为没有人在另一个网站上回复,我也面临同样的问题.

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

我想知道的是:

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

Rom*_*Guy 11

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

考虑到图像的内存成本,是的,颜色 - deptch起着非常重要的作用.ALPHA_8格式的图像每像素使用1个字节,RGB_565或ARGB_4444中的图像每像素使用2个字节,ARGB_8888中的图像使用每个像素4个字节.显示器的深度根本不重要.你应该总是尝试使用ARGB_8888来获得最好的质量,但如果你的图像是不透明的,那么565就足够了.