Android必备回顾:7、Bitmap到底如何优化

目录

一张图片它有多大是怎么计算的?

怎么去优化一张图片的大小

像素大小:inPreferredconfig(ARGB_8888和RGB_565)

那么 ARGB_8888 它是什么意思呢?

像素个数:inSampleSize


Bitmap到底如何优化?


在介绍之前,我们先要了解我们的图片是怎么构成的。

来,我们来看一下。

一张图片它有多大是怎么计算的?

大家可以看到我们这张图片是由一个一个这样的小方块组成的。

实际上这个小方块就是我们平时所说的像素,那么平时我们看照片的时候。

看不到这样的小方块,是因为我们的这个像素非常的小,所以说我们一般称它为像素点,

那我们的一张图片它有多大是怎么计算的? 大家想一下是怎么计算的?

其实我们的图片有多大,是每一个像素它所占用的大小再乘以这张图片总的像素个数。

这样的话就计算出来了我们的大小。比方说计算出来后就是 1kb、2kb或者是十兆、二十兆等等一些。

那具体怎么计算?

我们打个比方,假设我们的这一个像素点,一个像素点占用两个字节,我们这张图片假设是一千个像素。

那么整个这张图片它的大小是不是就是两千个字节啊,也就是 2kb 对不对?

也是 2kb ,那既然我们知道了我们一张图片,它的这个大小是这么计算的。

怎么去优化一张图片的大小

那么我们这一张图片想要优化它的大小的话,我们要怎么去优化,有什么思路没有。

实际上我们想要优化这一张图片的话,是不是可以从两个方面优化?

第一个就是从我们每一个像素它占用的大小去进行优化,对不对?比方说假设我的一个像素。

假设我们的像素,从一个像素占用两个字节,变成了一个像素占用一个字节。那么整个这个大小是不是就变成了 1kb,对不对?

还有一个角度是从什么呢?

就是从我们的像素的个数,假设它一个像素还是占用两个字节,而像素的个数由一千变成了五百。

那么是不是我们的这一个图片的大小也变成了 1kb,对不对?好的,那我们就从这两个方面去进行一个图片的优化。

我们可以看到,实际上安卓给我们提供的,这样的参数进行优化。这个参数就是我们的 BitmapFactory.options 里面的这两个参数。我们的 inPreferredConfig 这一个参数,就是用来设置我们的像素格式的,也就是每一个像素占用多少,占用多少个字节。
而 inSampleSize 它就是来把我们的一个图片,它的这一个像素总的个数,通过采样率去减少它的这一个个数来。

像素大小:inPreferredconfig(ARGB_8888和RGB_565)

我们首先来看一下 inPreferredConfig 这一个是如何的?

这个地方的话,举了两个例子,一个是我们的这个ARGB_8888,还有一个是 RGB_565。

那么 ARGB_8888 它是什么意思呢?

ARGB_8888 实际上它的 ARGB 是什么意思?

我们首先要清楚这一个,A指的就是我们的透明度,R指的是红色,G指的是绿色,B指的是蓝色。

那么 8888 是指什么意思呢?

它指的是:A透明度它要占用八个字节。这个 R 要占用八个字节,G 要占用八个字节,B 要占用八个字节。

那么这样组成一个像素的话,是不是就是四个 8 相加也就是三十二个字节。那么也就是占用 4 位。

所以说如果你的一张图片使用的是 ARGB_8888 这样的格式去组成的话,每一个像素它就占用四个字节。

而如果使用的是 RGB_565。五加六加五也就是 16 位,也就是 2 个字节。

所以说如果一张图片它原来只用的是 ARGB_8888,我把它改成 RGB_565 的话,是不是我的图片的这一个单元的大小就变为了原来的二分之一,是不是?所以说这就是我们的一种优化方式。

像素个数:inSampleSize

还有一种就是 inSampleSize,我们的一张图片刚才已经举例了,假如是一千个像素点,我把它变成五个,是不是就我的这一个图片就变小了。

所以说这个地方我们通过设置 inSampleSize 值,那么设置值它是一个整数值。

比方说我们设置成 2 的话,那这张图片它不是原来的二分之一,它的大小变成了原图片的四分之一,它怎么变的?

因为我们设置成 2 后,它的宽高就会变为原来的二分之一。来,画一下。

 

假设我们的图片本来有这么大,大家看到长宽分别为原来的二分之一,

那么这个时候实际上我们的图片变为了原来的四分之一,占用的内存大小也是原来的四分之一了。

我们这一个 inSampleSize 它的值的设置,要注意一点,就是它必须是 2 的幂,也就是2、4、8 这样的值不能是3、5等等一些

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值