Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略。
目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。
于是自然想到app巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨率图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。
因为有其他语言也想要实现 Luban,所以描述了一遍算法步骤
因为是逆向推算,效果还没法跟微信一模一样,但是已经很接近微信朋友圈压缩后的效果,具体看以下对比!
内容 | 原图 | Luban | |
---|---|---|---|
截屏 720P | 720*1280,390k | 720*1280,87k | 720*1280,56k |
截屏 1080P | 1080*1920,2.21M | 1080*1920,104k | 1080*1920,112k |
拍照 13M(4:3) | 3096*4128,3.12M | 1548*2064,141k | 1548*2064,147k |
拍照 9.6M(16:9) | 4128*2322,4.64M | 1032*581,97k | 1032*581,74k |
滚动截屏 | 1080*6433,1.56M | 1080*6433,351k | 1080*6433,482k |
compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.6' compile 'top.zibin:Luban:1.0.5'
Luban内部采用io线程进行图片压缩,外部调用只需设置好结果监听即可
Luban.get(this) .load(File) //传人要压缩的图片 .putGear(Luban.THIRD_GEAR) //设定压缩档次,默认三挡 .setCompressListener(new OnCompressListener() { //设置回调 @Override public void onStart() { //TODO 压缩开始前调用,可以在方法内启动 loading UI } @Override public void onSuccess(File file) { //TODO 压缩成功后调用,返回压缩后的图片文件 } @Override public void onError(Throwable e) { //TODO 当压缩过去出现问题时调用 } }).launch(); //启动压缩
RxJava 调用方式请自行随意控制线程
Luban.get(this) .load(file) .putGear(Luban.THIRD_GEAR) .asObservable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnError(new Action1<Throwable>() { @Override public void call(Throwable throwable) { throwable.printStackTrace(); } }) .onErrorResumeNext(new Func1<Throwable, Observable<? extends File>>() { @Override public Observable<? extends File> call(Throwable throwable) { return Observable.empty(); } }) .subscribe(new Action1<File>() { @Override public void call(File file) { //TODO 压缩成功后调用,返回压缩后的图片文件 } });
Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略 app巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨率图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。 因为是逆向推算,效果还没法跟微信一模一样,但是已经很接近微信朋友圈压缩后的效果 使用方法如下加个标记: new Thread(new Runnable() {
前几天在做图片上传的时候,没有做图片压缩的逻辑。于是就出现了一系列很麻烦的问题。浪费流量,耗费资源,速度缓慢……恩……是时候展现真的技术了,有请鲁班大师:Luban(鲁班) —— Android图片压缩工具,仿微信朋友圈压缩策略。 开始 老规矩,喜欢看原文的戳这里:鲁班——仿微信朋友圈压缩策略。 项目描述 目前做App开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com Luban 鲁班 图片压缩 目录 目录 介绍 turbo 版本 算法步骤 使用方式 案例 介绍 GitHub Luban(鲁班)—Image compression with efficie
个人博客:haichenyi.com。感谢关注 Android让人头疼的OOM,造成OOM的原因之一就是图片,现在的手机像素越来越高,随便一张图片都是好几M,甚至几十M,这样的照片加载到app,可想而知,随便加载几张图片,手机内存就不够用了,自然而然就造成了OOM,所以,Android的图片压缩异常重要。这里,我推荐一款开源框架——Luban 效果与对比 这里就不放效果图了,我拷贝了鲁班g
导入 implementation 'top.zibin:Luban:1.1.8' 使用 方法列表 方法 描述 load 传入原图 filter 设置开启压缩条件 ignoreBy 不压缩的阈值,单位为K setFocusAlpha 设置是否保留透明通道 setTargetDir 缓存压缩图片路径 setCompressListener 压缩回调接口 setRenameListener 压缩前重命
Android让人头疼的OOM,造成OOM的原因之一就是图片,现在的手机像素越来越高,随便一张图片都是好几M,甚至几十M,这样的照片加载到app,可想而知,随便加载几张图片,手机内存就不够用了,自然而然就造成了OOM,所以,Android的图片压缩异常重要。这里,我推荐一款开源框架——Luban 效果与对比 这里就不放效果图了,我拷贝了鲁班github上面的介绍——Android图片压缩工具
一.Luban是什么? Luban(鲁班) —— Android图片压缩工具,仿微信朋友圈压缩策略。 二.使用步骤 1.引入依赖 //图片压缩库 implementation 'top.zibin:Luban:1.1.8' 2.属性方法 方法 描述 load 传入原图 filter 设置开启压缩条件 ignoreBy 不压缩的阈值,单位为K setFocusAlpha 设置是否保留透
本文向大家介绍Android图片压缩(质量压缩和尺寸压缩),包括了Android图片压缩(质量压缩和尺寸压缩)的使用技巧和注意事项,需要的朋友参考一下 在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成
本文向大家介绍java图片压缩工具类,包括了java图片压缩工具类的使用技巧和注意事项,需要的朋友参考一下 直接上java图片压缩code: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Android整理好的图片压缩工具类,包括了Android整理好的图片压缩工具类的使用技巧和注意事项,需要的朋友参考一下 Android设备的内存有限,对于大图片,必须进行压缩后再进行显示,否则会出现内存溢出:OOM; 处理策略: 1.使用缩略图(Thumbnails); Android系统会给检测到的图片创建缩略图;可以操作Media内容提供者中的Image对图片进行操作; 2.手
compressImage 压缩图片接口(安卓10.0.12版本支持,ios 10.0.15版本支持) 使用方法 AlipayJSBridge.call('compressImage', { apFilePaths: ["https://resource/apmlcc0ed184daffc5a0d8da86b2f518cf7b.image"], compressLevel: 4 }, f
鲁班H5是基于Vue2.0开发的,通过拖拽的形式,生成页面的工具,类似易企秀、百度 H5 的一个可视化搭建系统 初心:希望能通过工程化的手段,大幅度提高简单H5页面的制作效率,提高工程师的幸福感,从这种需求频繁变更的简单任务中解脱出来 Screenshots 在线访问地址 Features 编辑器 - [x] 参考线 - [x] 吸附线、组件对齐 - [x] 拖拽改变组件形
本文向大家介绍Android图片压缩的实例详解,包括了Android图片压缩的实例详解的使用技巧和注意事项,需要的朋友参考一下 Android图片压缩的实例详解 在做微信分享的时候,由于分享的缩略图要求不得大于32K,否则不能调起微信,所以总结了一下Android图片的压缩问题,大部分资料都是来自网上各位的分享,自己只是完善或修改了一下,本着继续分享的精神,也方便自己记忆,于是总结如下。 andr