0
点赞
收藏
分享

微信扫一扫

Android微信分享图片按质量压缩的解决方案,androidndk开发教程

三、将io流转为byte数组

public static byte[] inputStreamToByte(InputStream is) {
try {
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = is.read()) != -1) {
bytestream.write(ch);
}
byte imgdata[] = bytestream.toByteArray();
bytestream.close();
return imgdata;
} catch (Exception e) {
e.printStackTrace();
}

return null;
}

四、按质量压缩

/**

  • 按质量压缩图片
  • @param src bitmap图片
  • @param maxByteSize 最大字节数
  • @param recycle
  • @return
    */
    public static byte[] compressByQuality(final Bitmap src, final long maxByteSize, final boolean recycle) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    src.compress(CompressFormat.JPEG, 100, baos);
    byte[] bytes;
    if (baos.size() <= maxByteSize) {
    bytes = baos.toByteArray();
    } else {
    baos.reset();
    src.compress(CompressFormat.JPEG, 0, baos);
    if (baos.size() >= maxByteSize) {
    bytes = baos.toByteArray();
    } else {
    // find the best quality using binary search
    int st = 0;
    int end = 100;
    int mid = 0;
    while (st < end) {
    mid = (st + end) / 2;
    baos.reset();
    src.compress(CompressFormat.JPEG, mid, baos);
    int len = baos.size();
    if (len == maxByteSize) {
    break;
    } else if (len > maxByteSize) {
    end = mid - 1;
    } else {
    st = mid + 1;
    }
    }
    if (end == mid - 1) {
    baos.reset();
    src.compress(CompressFormat.JPEG, st, baos);
    }
    bytes = baos.toByteArray();
    }

小福利:

在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021大厂最新Android面试真题解析

各个模块学习视频:如数据结构与算法

算法与数据结构资料图

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
一线互联网架构师

直接点击这里前往我的GitHub中下载,就可以白嫖啦,记得给文章点个赞哦。

%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)中下载**,就可以白嫖啦,记得给文章点个赞哦。

举报

相关推荐

0 条评论