Android java减少位图内存负载

时间:2016-01-09 11:59:32

标签: java android memory bitmap

我已经问了一个关于同一主题的问题(here),但我还有另一个问题,所以我认为一个新问题会更好(如果我错了,请纠正我)。< / p>

我注意到Android Bitmap使用每像素编码。这是相当低效的。然后我偶然发现了BitmapFactory.Options类,它允许您选择较小的每像素(RGB_565)格式:

public BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;

然后在加载Bitmap时使用此选项以减少内存负载。但是你仍然有一个每像素编码。现在我的问题是,有没有办法使用非像素编码在画布上显示位图?或者是否可以在不花费更多内存的情况下升级较小的位图(即,你有一个10x10的图像,并希望将其升级到100x100,而不需要在内存中只有100000像素而只需要100个)?

希望我的问题很明确。我可以发布一些代码,但我没有看到这个特定问题的附加价值。

1 个答案:

答案 0 :(得分:0)

这非常令人沮丧,我已经好几天都在考虑这个问题了,一遍又一遍地阅读Bitmap文档并最终拼命地发布了stackoverflow的问题,在发布后几分钟我发现了这个解决方案。

问题在于,这不是Bitmap类中的选项,而是Canvas类中的选项。 Canvas类为此描述的here提供了几个函数:

  

drawBitmap(位图位图,矩阵矩阵,油漆颜料)

     

drawBitmap(位图位图,Rect src,RectF dst,Paint paint)

     

drawBitmap(位图位图,Rect src,Rect dst,Paint paint)

很抱歉打扰,但我很高兴我得到了解决方案。我希望其他人可能会觉得这很有用。