codeegginterviewgroup / CodeEggDailyInterview

码个蛋每日面试题
395 stars 54 forks source link

如何计算一个Bitmap占用内存的大小,怎么保证加载Bitmap不产生内存溢出? #185

Open kukyxs opened 4 years ago

kami-zeros commented 4 years ago

Bitamp 占用内存大小 = 宽度像素 x (inTargetDensity / inDensity) x 高度像素 x (inTargetDensity / inDensity)x 一个像素所占的内存

注:这里inDensity表示目标图片的dpi(放在哪个资源文件夹下),inTargetDensity表示目标屏幕的dpi,所以你可以发现inDensity和inTargetDensity会对Bitmap的宽高 进行拉伸,进而改变Bitmap占用内存的大小。

在Bitmap里有两个获取内存占用大小的方法。

为了保证在加载Bitmap的时候不产生内存溢出,可以受用BitmapFactory进行图片压缩,主要有以下几个参数: