Android 图片压缩方法分析与学习

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

bitmap compress 是官方给出的图片质量压缩,通过试验学习了这个压缩的特性如下:

  1. 它是图片质量压缩,不会改变图片的分辨率
  2. bitmap.compress(Bitmap.CompressFormat.JPEG, option, bos);

    三个参数说明,1.图片压缩后的格式 2.图片压缩比例 3.压缩后得到的数据

  3. 这个方法会使图片压缩但是,由于是质量压缩,bitmap不会变小,也就是内存依然大,压缩的数据确实变小使用的时候得注意了内存溢出问题

测试方法如下:

 System.out.println("bitmap=="+bitmap.getByteCount());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//通过这里改变压缩类型,其有不同的结果
int option = 100;
while (option > 0)
{
    bitmap.compress(Bitmap.CompressFormat.JPEG, option, bos);
    System.out.println("bos=====" + bos.size());
    option-=10;
    bos.reset();
}

System.out.println("bitmap==" + bitmap.getByteCount());
bitmap.recycle();

ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
System.out.println("bis====="+bis.available());
bitmap = BitmapFactory.decodeStream(bis);
System.out.println("bitmap=="+bitmap.getByteCount());
imageView.setImageBitmap(bitmap);

如果确实要节约内存

就是用如下方法:

ByteArrayOutputStream out = new ByteArrayOutputStream();
  image.compress(Bitmap.CompressFormat.JPEG, 100, out);
  BitmapFactory.Options newOpts =  new  BitmapFactory.Options();
  int be = 2;//压缩比例,可以自己通过分辨率去计算需要的比例值
  newOpts.inSampleSize = be;
  ByteArrayInputStream isBm =  new  ByteArrayInputStream(out.toByteArray());
  Bitmap bitmap = BitmapFactory.decodeStream(isBm,  null ,  null );

.................... 【.........阅读全文】

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值