BitmapFactory.Options.inSampleSize的速度最佳使用

问题描述 投票:22回答:4

感谢Schermvliegeranddev.org

上问this问题

[我只是将他的问题复制到SO,因为没有人在另一个站点上回答,而且我也面临相同的问题。

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

我想知道的是:

  1. 应该重新采样到仍大于屏幕分辨率的最小尺寸,还是应该采样到恰好避免OutOfMemoryError的尺寸?
  2. 如何计算在不耗尽内存的情况下仍可以显示的图像的最大尺寸?图像的色彩深度和显示深度是否也起作用?
  3. 通过两种机制来显示图像是否有效(大文件为BitmapFactory,小文件为setImageURI()。我顺便使用了ImageSwitcher
  4. 它是否有助于在应用程序的开头创建BitmapBitmapFactory.OptionsinTempStorage或仅在需要时动态创建它们?
android bitmap bitmapfactory
4个回答
11
投票

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

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


4
投票

您已经问了好问题,但这完全取决于您的需求以及使用的内存量。我建议您查看此链接以获得有关位图的许多提示:http://developer.android.com/training/displaying-bitmaps/index.html


3
投票

这里您可以调用用户定义的方法shrinkmehtod,该方法实际上将字符串文件路径以及要缩小图像的高度和宽度发送到方法。


0
投票

您好,尝试使用此逻辑计算inSampleSize

© www.soinside.com 2019 - 2024. All rights reserved.