Android 一个像素几个字节,Android 基础篇 — Bitmap到底多大?

6f6450d119f7

还是先把这个表格画出来:

drawable

mdpi

hdpi

xhdpi

xxhdpi

xxxhdpi

density

1

1.5

2

3

4

densityDpi

160

240

320

480

640

一般来说,图片的大小满足以下计算公式。

图片大小 = 图片像素点个数 * 每个像素点大小

1 图片像素点个数

那我们就先来看图片像素点个数这个因素,由前两篇文章我们得知,图片像素点个数不仅和图片本身大小相关,还和放在哪个文件夹以及手机屏幕dpi值都有着密切的关联。

在drawable-xhdpi中放置一张宽高为1125 X 900的图片,运行以下代码打印了一些相关的值。

DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

Log.d("zp_test", "density: " + metrics.density);

Log.d("zp_test", "densityDpi: " + metrics.densityDpi);

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

LogUtils.d("memory 1: " + bitmap.getAllocationByteCount());

}

LogUtils.d("height: " + bitmap.getHeight());

LogUtils.d("width: " + bitmap.getWidth());

6f6450d119f7

image.png

900的高度,像素点怎么会变成1238呢?其实只是等比例放大了,因为手机的density值为2.75,而xhpi文件夹的值为2。

2.75 / 2 * 900 = 1237.5 ≈ 1238

宽度以此类推。

2 像素点大小

图片常见的格式如下:

ARGB_4444,每个像素点2个字节(2byte)

ARGB_8888,每个像素点4个字节(4byte)

RGB_565,每个像素点2个字节(2byte)

而Android手机中,图片的格式和原图的某些属性相关,这里就不作展开讨论。

而此张图的格式为ARGB_8888,也就是4个字节,所以打印出来的大小是这样计算出来的:

1238 * 1547 * 4 = 7660744

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值