返回顶部
首页 > 资讯 > 精选 >android递归压缩上传多张图片到七牛的实例代码
  • 186
分享到

android递归压缩上传多张图片到七牛的实例代码

android七牛上传 2023-05-30 22:05:28 186人浏览 八月长安
摘要

最近遇到这样一个需求:要做一个仿微信朋友圈的功能,要求上传最多九张图到七牛。七牛有上传图片的接口,但是每次只能上传一张。如果是九张图片一齐上传,使用for循环的话肯定不行的,很容易出错。因为上传七牛的动作是在子线程完成的,for循环是在主线

最近遇到这样一个需求:要做一个仿微信朋友圈的功能,要求上传最多九张图到七牛。七牛有上传图片的接口,但是每次只能上传一张。如果是九张图片一齐上传,使用for循环的话肯定不行的,很容易出错。因为上传七牛的动作是在子线程完成的,for循环是在主线程的,这就相当于同时开启十个子线程来上传图片,而且都是耗时线程,很容易会ANR的。

最好的解决办法应该是先压缩图片,在200k-300k之间,保证图片不失真,然后一张一张上传,通过七牛的回调,来判断上一张图片是否上传完成,上传完成了,再上传下一张图片。

好了,话不多说,贴代码:

压缩图片

  public byte[] compressImage(Bitmap image) {    ByteArrayOutputStream baos = new ByteArrayOutputStream();    image.compress(Bitmap.CompressFORMat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中    int options = 100;    while (baos.toByteArray().length / 1024 > 250) { //循环判断如果压缩后图片是否大于100kb,大于继续压缩      baos.reset();//重置baos即清空baos      image.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中      options -= 10;//每次都减少10      if (options <= 10) {        break;      }    }    byte[] byteArray = baos.toByteArray();    try {      if (baos != null) {        baos.close();      }    } catch (IOException e) {      e.printStackTrace();    }    return byteArray;  }

--结束END--

本文标题: android递归压缩上传多张图片到七牛的实例代码

本文链接: https://lsjlt.com/news/221718.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作