热卖商品
新闻详情
可能是Android平台上最快的图片压缩框架 - SegmentFault 思否
来自 : segmentfault.com/a/11900000114
发布时间:2021-03-24
ghnor发布于 2017-09-30
(对不起,标题是骗人的)
emmm...不管怎么说,我也写了一个图片压缩框架。
在Luban的算法策略上,我丰富了外围的api,提供更多的可配参数,多线程压缩和不同细粒度的任务控制。
https://github.com/ghnor/Flora
dependencies { compile \'com.android.support:appcompat-v7:25.3.1\' compile \'com.ghnor:flora:1.0.0-alpha1\'}异步压缩:
Flora.with().load(source...).compress(new Callback ());同步压缩:
Flora.with().load(R.drawable.test2).compressSync();可控的压缩任务
Flora.with(Activity)Flora.with(FragmentActivity)Flora.with(Fragment)Flora.with(SupportFragment)// 上面的四类,会自动在页面生命周期结束后,终止压缩任务。// 通过TAG标志位来结束一系列的任务。Flora.with(TAG)// 强制结束任务。Flora.cancel(TAG);// 无参,此时的任务进行其实是不受控的,强烈建议不要采用这种写法。Flora.with()
Flora.with() // 配置inSample和quality的算法,内置了一套基于Luban的压缩算法 .calculation(new Calculation() { @Override public int calculateInSampleSize(int srcWidth, int srcHeight) { return super.calculateInSampleSize(srcWidth, srcHeight); @Override public int calculateQuality(int srcWidth, int srcHeight, int targetWidth, int targetHeight) { return super.calculateQuality(srcWidth, srcHeight, targetWidth, targetHeight); // 对压缩后的图片做个性化地处理,如:添加水印 .addDecoration(new Decoration() { @Override public Bitmap onDraw(Bitmap bitmap) { return super.onDraw(bitmap); // 配置Bitmap的色彩格式 .bitmapConfig(Bitmap.Config.RGB_565) // 最大文件尺寸,不建议配置此项,目前采用的方式是重复写入文件,判断大小,比较耗时 .maxFileSize(1.0) // 同时可进行的最大压缩任务数量 .compressTaskNum(1) // 安全内存,设置为2,表示此次压缩任务需要的内存小于1/2可用内存才进行压缩任务 .safeMemory(2) // 压缩完成的图片在磁盘的存储目录 .diskDirectory(File) .load(source...) .compress();
本身内部采用线程池的方案去进行压缩任务,同时进行了必要的内存检查。
在不会OOM的前提下,最大的提升了压缩的速度,常见的9图大小在20M+能够在2s内处理完成。
当然,机器性能,系统当时的内存都是对此产生影响,我的测试机是【魅蓝Note】...
由于压缩策略集成自Luban,所以最后图片压缩大小前后对比可以参考Luban。
我在此基础上,对社交产品中常见的长图的需求进行了一定的优化。
图片android阅读 5.6k更新于 2017-10-11 赞2收藏1分享本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议ghnor90 声望2 粉丝关注作者0 条评论得票时间
提交评论
ghnor90 声望2 粉丝关注作者宣传栏 目录▲产品热门问答热门专栏热门课程最新活动技术圈酷工作移动客户端课程Java 开发课程PHP 开发课程Python 开发课程前端开发课程移动开发课程资源每周精选用户排行榜徽章帮助中心声望与权限社区服务中心合作关于我们广告投放职位发布讲师招募联系我们合作伙伴关注产品技术日志社区运营日志市场运营日志团队日志社区访谈条款服务条款隐私政策下载 App
Copyright © 2011-2021 SegmentFault. 当前呈现版本 21.03.23
浙ICP备15005796号-2浙公网安备33010602002000号ICP 经营许可 浙B2-20201554
杭州堆栈科技有限公司版权所有
本文链接: http://floratech.immuno-online.com/view-698514.html
发布于 : 2021-03-24
阅读(0)
最新动态
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
2021-03-24
联络我们