博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中Bitmap占多大内存
阅读量:6245 次
发布时间:2019-06-22

本文共 848 字,大约阅读时间需要 2 分钟。

hot3.png

Android API中有个方便的方法,可以计算Bitmap在运行中占多大内存。

public final int getByteCount() {    // int result permits bitmaps up to 46,340 x 46,340    return getRowBytes() * getHeight();}

那给一张图片,如何不通过代码如何知道占用的内存大小呢?

1. 我们知道图片使用色彩格式的,在Android中主要有以下几种

ALPHA_8 代表8位Alpha位图,就是Alpha由8位组成

ARGB_4444 代表16位ARGB位图,就是由4个4位组成
ARGB_8888 代表32位ARGB位图,就是由4个8位组成
RGB_565 代表8位RGB位图,就是R为5位,G为6位,B为5位共16位

2. 在Android中,图片资源可以放在不同的drawable下,会导致图片的density不同。inDensity

hdpi 240 xhdpi 320 xxhdpi 480 间隔是160

3. 每个手机屏幕的density,就是屏幕每英寸对应多少个点(不是像素点)。inTargetDensity

综上,一个图片在Android占内存的大小,计算方式如下:

width * (inTargetDensity / inDensity) * height * (inTargetDensity / inDensity) * ARGB

那么如何减少Bitmap占用内存的大小呢?

使用BitmapFactory.Options设置解析图片的参数

1. 使用inSimpleSize

2. 使用矩阵Matrix

3. 合理选择像素格式

详细可以参考 http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=498

转载于:https://my.oschina.net/android520/blog/819460

你可能感兴趣的文章
Ubuntu常用软件安装与使用
查看>>
Anroid开发中常用快捷键
查看>>
RecyclerView分隔线定制
查看>>
文本处理(CSS,JS)
查看>>
VBScript 函数
查看>>
shell编程学习
查看>>
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决
查看>>
apache源码安装
查看>>
使用TensorFlow遇到的若干问题
查看>>
poj2187
查看>>
Linux下使用 xrandr 命令设置屏幕分辨率
查看>>
Bzoj4766: 文艺计算姬(Matrix-tree/prufer)
查看>>
swift - 移除界面上的所有元素
查看>>
Linux常用函数
查看>>
Oracle dbms_output.put_line长度限制问题
查看>>
Hibernate-ORM:07.Hibernate中的参数绑定
查看>>
关于全局HOOK的2个友情提醒
查看>>
深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解
查看>>
九宫格
查看>>
数据库操作语法错误(SQL syntax error)之两步走
查看>>