初识Android Bitmap压缩原理

本文介绍了Android Bitmap的压缩原理,包括下采样压缩的两种实现方式——使用Options.inSampleSize和createScaledBitmap/MATRIX,以及质量压缩的概念。下采样通过减少像素数降低内存占用,质量压缩则是损失颜色精度来减小文件大小。同时讨论了BitmapFactory.Options.inPreferredConfig在加载图片时的作用。
摘要由CSDN通过智能技术生成

概念解释

RGB颜色模型: 最常见的颜色模型,设备相关。R、G、B分别代表红、绿和蓝色三种颜色通道,取值均为[0,255]。

RGB 8位色: 表示使用8位(bit)表示颜色,一共能表示2^8 = 128种颜色。

                    依次类推RGB 16位色,RGB 24位色,RGB 32位色,使用的位数越多,能表示的颜色越多,24位能表示的颜色数量已经很多了,称之为“真彩色”。

                    32位和24位能表示的颜色一样多,多一个了透明度。

Android Bitmap使用的三种颜色格式:

  • ALPHA_8–每个像素占1个字节,存储透明度信息,没有颜色信息。
  • RGB_565--每个像素占2个字节存储颜色信息,R 5位,G 6位,B 5位,能表示2^16种颜色。
  • ARGB_8888--每个像素占4个字节存储颜色信息,A R G B各一个字节,能表示2^24种颜色,还有一个字节存储透明度信息。 

压缩原理

在Android中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是下采样压缩,其二是质量压缩。前者是降低图像尺寸,改变图片的存储体积;而后者则是在不改变图片尺寸的情况下,通过损失颜色精度,达到相同目的。

下采样压缩


图片尺寸的修改其实就是通过修改像素数,放大的过程称之为上采样,缩小的过程称之为下采样。在这里,我们只讨论下采样。下采样压缩是通过减少图片的像素数的来减小Bitmap内存占用。

1.使用Options.inSampleSize

代码示例:

BitmapFactory.Options options =  new  BitmapFactory.Options();
options.inSampleSize =  2 ;
Bitmap bitmap = BitmapFactory.decodeFile( "/sdcard/test.png" );
Bitmap compress = BitmapFactory.decodeFile( "/sdcard/test.png" , options);

当采样率为inSampleSize = 2时,Bitmap内存宽高各减少一半,内存占用是不缩放情况下的1/4。

关于采样率的选择参考Android官方指南高效加载大图,主要分为两步:

探测图片宽高
BitmapFactory.Options options =  new  BitmapFactory.Options();
options.inJustDecodeBounds =  true ;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值