关于Android中图片compress的有关问题

        在Android中图片的三种类型形式是Bitmap,Drawable和byte[],Google原始的代码中,存在联系人数据库里面的联系人头像就是byte[]类型的。但是为保证数据库不会过大,图片都是要经过压缩之后再保存的。

       众所周知,联系人都是有导出导入功能的,导出时就是取的数据库中保存的压缩过的头像,那么如果导入时再次压缩,联系人头像经过多次导出导入之后,头像就会越来越模糊。产生这种情况的原因是导入时和新建联系人设置头像时都走了同一个压缩方法,而且根本没办法区分是新建联系人还是导入。那么通过变量来区分是行不通的,或者说是代价太大。经过输出LOG发现,两者在压缩前后byte[]的长度,即头像的实际文件大小变化是不同的。也就是说,新建联系人时,头像压缩前比压缩后大,而导入恰恰相反。那么就可以以此区分是新建还是导入。产生这种情况原因如下:

1.Bitmap和byte[]之间的相互转换方法

private Bitmap byteToBitmap(byte[] bitmapToByte) {
  // TODO Auto-generated method stub
  return BitmapFactory.decodeByteArray(bitmapToByte, 0, bitmapToByte.length);
 }
private byte[] bitmapToByte(Bitmap bitmap) {
  // TODO Auto-generated method stub
  ByteArrayOutputStream baos =new ByteArrayOutputS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值