Luban(鲁班)

Android 图片压缩工具
授权协议 Apache
开发语言 Java
所属分类 程序开发、 图形/图像处理
软件类型 开源软件
地区 国产
投 递 者 毛胜
操作系统 Android
开源组织
适用人群 未知
 软件概览

Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略。

项目描述

目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多文章介绍。但是裁切成多少,压缩成多少却很难控制好,裁切过头图片太小,质量压缩过头则显示效果太差。

于是自然想到app巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨率图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。

因为有其他语言也想要实现 Luban,所以描述了一遍算法步骤

因为是逆向推算,效果还没法跟微信一模一样,但是已经很接近微信朋友圈压缩后的效果,具体看以下对比!

效果与对比

内容 原图 Luban Wechat
截屏 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'

使用

Listener方式

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方式

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