成都网站建设设计

将想法与焦点和您一起共享

详解AndroidBitmap的常用压缩方式-创新互联

一、前言

站在用户的角度思考问题,与客户深入沟通,找到广水网站设计与广水网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖广水地区。

已经好久没有更新博客,大概有半年了,主要是博主这段时间忙于找工作,Android岗位的工作真的是越来越难找,好不容易在广州找到一家,主要做海外产品,公司研发实力也不错,所以就敲定了三方协议。现在已经在公司实习了一个月多,目前主要是负责公司某个产品的内存优化,刚好就总结了一下Android Bitmap常用的优化方式。

Android中的图片是以Bitmap方式存在的,绘制的时候也是Bitmap,直接影响到app运行时的内存,在Android,Bitmap所占用的内存计算公式是:图片长度 x 图片宽度 x像素点的字节数

二、图片常用的压缩格式


Enum Values
ALPHA_8 每个像素都存储为一个半透明(alpha)通道
ARGB_4444 此字段已在API级别13中弃用。由于此配置的质量较差,建议使用ARGB_8888
ARGB_8888 每个像素存储在4个字节。
RGB_565 每个像素存储在2个字节中,只有RGB通道被编码:红色以5位精度存储(32个可能值),绿色以6位精度存储(64个可能值),蓝色存储为5位精确。

其中字母代表的意思我们大概都可以理解,接下来我们来算算它们单个像素点的字节数:

  1. ALPHA_8:表示8位Alpha位图,即透明度占8个位,一个像素点占用1个字节,它没有颜色,只有透明度。
  2. ARGB_4444:表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4+4+4+4=16位,2个字节。
  3. ARGB_8888:表示32位ARGB位图,即A=8,R=8,G=8,B=8,一个像素点占8+8+8+8=32位,4个字节。
  4. RGB_565 :表示16位RGB位图,即R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字节

我们在做压缩处理的时候,可以先通过改变Bitmap的图片格式,来达到压缩的效果,其实压缩最主要就是要么改变其宽高,要么就通过减少其单个像素占用的内存。

三、常用的压缩方法:

1.质量压缩

  private void compressQuality() {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.test);
    mSrcSize = bm.getByteCount() + "byte";
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
    byte[] bytes = bos.toByteArray();
    mSrcBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
  }

本文题目:详解AndroidBitmap的常用压缩方式-创新互联
分享链接:http://chengdu.cdxwcx.cn/article/gjjic.html