Android图片压缩的几种方案

各位同学早上好,今天推荐的是Hensen同学的原创投稿文章,本文将为你介绍Android平台上几种压缩图片的方案。这是纠正一下昨天推文标题的错误,原推文除夕赠书活动获奖读者应该中的除夕应该是冬至,大晚上编辑稿子时,分心想去看除夕的日子去了,结果没注意就定时推送了文章,这里谢谢指出的几位同学,以及跟大家说一声抱歉。昨天也陆续收到获奖读者留下的信息,目前还有佳颖Joyce两位同学没有给我留下收件人姓名+收货地址+想要的书籍+手机号+微信号,请看到后后台给我留言,谢谢了。好了,下面直接进入正文。

效果演示

直接先给大家对比几种图片压缩的效果

质量压缩

质量压缩:根据传递进去的质量大小,采用系统自带的压缩算法,将图片压缩成JPEG格式

尺寸压缩

尺寸压缩:根据图片的缩放比例进行等比大小的缩小尺寸,从而达到压缩的效果

采样率压缩

采样率压缩:根据图片的采样率大小进行压缩

LibJpeg压缩

LibJpeg压缩:通过Ndk调用LibJpeg库进行压缩,保留原有的像素,清晰度高

编译LibJpeg

1、从Github上可以下载已经写好编译脚本的项目:https://github.com/Zelex/libjpeg-turbo-android ,并将其上传到Linux服务器的某个目录

2、授予整个目录权限

3、进入libjpeg目录,使用下面指令进行编译,前提是你的服务器已经搭建了ndk-build和配置了环境变量

4、接着编译成功后,会在 obj/local 目录下生成我们需要的 libjpeg.a

创建工程

1、创建一个新的项目,勾选包含C++,勾选C++11和C++的依赖库

2、将生成的 libjpeg.a和头文件导入到我们的项目中

3、配置gradle

4、配置CMake

5、声明权限

使用LibJpeg

1、启动选择文件的Intent

2、对返回的结果进行压缩

3、加载本地库和声明LibJpeg压缩方法

4、编写LibJpeg的本地文件

提取图片的ARGB通量的RGB通量

采用LibJpeg的API进行压缩

将数据写入到文件中

需要跑一下以上几种方案源码的同学,可以访问:https://github.com/AndroidHensen/BitmapCompress获取。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171226G03M6100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券