关于大图压缩后分享到微信十分模糊问题

    注:代码来自http://blog.csdn.net/infsafe/article/details/7744582,稍微做了修改。

    微信分享图片限制为32k,有场景需分享大图给微信,直接根据字节数进行压缩后,分享到微信,从网上图片已完全失真:

    

  代码如下:

  private static Bitmap imageZoom(Bitmap src_bitmap) {
        // 图片允许最大空间 单位:KB
        double maxSize = IMAGE_SIZE;//32
        // 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大)
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        src_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] b = baos.toByteArray();
        // 将字节换成KB
        double mid = b.length / 1024;
        // 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩
        if (mid > maxSize) {
            // 获取bitmap大小 是允许最大大小的多少倍
            double i = mid / maxSize;
            // 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小)
            Bitmap bitmap = zoomImage(src_bitmap, src_bitmap.getWidth() / Math.sqrt(i),
                    src_bitmap.getHeight() / Math.sqrt(i));
            return bitmap;
        }
        return src_bitmap;
  }

       后经测试发现将代码:

  src_bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

  改为:

  src_bitmap.compress(Bitmap.CompressFormat.JPEG, 10, baos);

  既可满足需求,在微信中显示的图如下:


    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值