各位同学早上好,今天推荐的是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获取。
领取专属 10元无门槛券
私享最新 技术干货