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);}

质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度,来达到压缩图片的目的,图片的长,宽,像素都不会改变,那么bitmap所占内存大小是不会变的。

我们可以看到有个参数:quality,可以调节你压缩的比例,但是还要注意一点就是,质量压缩堆png格式这种图片没有作用,因为png是无损压缩。

2、采样率压缩

 private void compressSampling() {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inSampleSize = 2;        mSrcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test, options);}

采样率压缩其原理其实也是缩放bitamp的尺寸,通过调节其inSampleSize参数,比如调节为2,宽高会为原来的1/2,内存变回原来的1/4.

3、缩放法压缩

private void compressMatrix() {        Matrix matrix = new Matrix();        matrix.setScale(0.5f, 0.5f);        Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.test);        mSrcBitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);        bm = null;    }

缩放压缩使用的是通过矩阵对图片进行裁剪,也是通过缩放图片尺寸,来达到压缩图片的效果,和采样率的原理一样。

4、RGB_565压缩

private void compressRGB565() {        BitmapFactory.Options options = new BitmapFactory.Options();        options.inPreferredConfig = Bitmap.Config.RGB_565;        mSrcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test, options);    }

这是通过压缩像素占用的内存来达到压缩的效果,一般不建议使用ARGB_4444,因为画质实在是辣鸡,如果对透明度没有要求,建议可以改成RGB_565,相比ARGB_8888将节省一半的内存开销。

5、指定大小压缩

 private void compressScaleBitmap() {        Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.test);        mSrcBitmap = Bitmap.createScaledBitmap(bm, 600, 900, true);        bm = null;    }

将图片的大小压缩成用户的期望大小,来减少占用内存。

 

感谢:https://www.jianshu.com/p/08ed0e3c4e71

更多相关文章

  1. android 图片点击一下就放大到全屏,再点一下就回到原界面
  2. Android实现对imageview的拖动以及缩放
  3. Android 显示网页图片
  4. android 图片与byte数组间的转换
  5. android 图片灰度处理的处理
  6. 轮播网络图片加载适配
  7. Android WebView 图片自适应屏幕宽度
  8. android 通过滚动条改变图片显示

随机推荐

  1. Android内存管理机制
  2. Android新手轻松入门十问十答
  3. 刚进入Android终端即可使用busybox的命令
  4. JAVA和Android之较量
  5. 想抢先体验Android操作系统的魅力吗?那就
  6. 零打碎敲学Android(二)—做个拼图游戏吧
  7. Android应用程序的开发
  8. Android中SQLite应用详解
  9. Android应用程序框架层和系统运行库层日
  10. (搬运工)android makefile(android.mk)分