首页
/ AdvancedLuban 使用教程

AdvancedLuban 使用教程

2026-01-17 08:43:27作者:虞亚竹Luna

项目介绍

AdvancedLuban 是一个方便简约的 Android 图片压缩工具库,提供多种压缩策略和调用方式,专注于更好的图片压缩体验。该项目基于 Luban 原有的压缩策略进行了扩展,支持自定义压缩和多图同步压缩。

项目快速启动

引入依赖

首先,在项目的 build.gradle 文件中添加以下依赖:

dependencies {
    implementation 'me.shaohui.advancedluban:library:1.3.5'
}

基本使用

以下是一个基本的压缩示例,使用 Listener 方式进行图片压缩:

import me.shaohui.advancedluban.Luban;
import me.shaohui.advancedluban.OnCompressListener;

File file = new File("path/to/your/image.jpg");

Luban.get(this)
    .load(file)
    .putGear(Luban.THIRD_GEAR)
    .launch(new OnCompressListener() {
        @Override
        public void onStart() {
            // 压缩开始前的操作
        }

        @Override
        public void onSuccess(File compressedFile) {
            // 压缩成功后的操作
            Log.d("Luban", "Compressed file path: " + compressedFile.getPath());
        }

        @Override
        public void onError(Throwable e) {
            // 压缩失败后的操作
        }
    });

应用案例和最佳实践

自定义压缩

AdvancedLuban 支持自定义压缩模式,可以根据需求限制图片的宽度、高度或文件大小:

Luban.get(this)
    .load(file)
    .putGear(Luban.CUSTOM_GEAR)
    .setMaxSize(500) // 限制文件大小为500KB
    .setMaxWidth(1080) // 限制图片宽度为1080px
    .setMaxHeight(1920) // 限制图片高度为1920px
    .launch(listener);

多图同步压缩

AdvancedLuban 支持多图同步压缩,可以一次性压缩多张图片:

List<File> files = Arrays.asList(file1, file2, file3);

Luban.get(this)
    .load(files)
    .putGear(Luban.THIRD_GEAR)
    .launch(new OnMultiCompressListener() {
        @Override
        public void onStart() {
            // 压缩开始前的操作
        }

        @Override
        public void onSuccess(List<File> compressedFiles) {
            // 压缩成功后的操作
            for (File compressedFile : compressedFiles) {
                Log.d("Luban", "Compressed file path: " + compressedFile.getPath());
            }
        }

        @Override
        public void onError(Throwable e) {
            // 压缩失败后的操作
        }
    });

典型生态项目

AdvancedLuban 可以与其他图片处理库结合使用,例如 Glide 和 Picasso,以实现更复杂的图片加载和处理需求。以下是一个结合 Glide 的示例:

Glide.with(this)
    .load(file)
    .listener(new RequestListener<Drawable>() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
            // 加载失败的处理
            return false;
        }

        @Override
        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
            // 加载成功的处理
            return false;
        }
    })
    .into(imageView);

通过结合 AdvancedLuban 和 Glide,可以在加载图片的同时进行高效的压缩处理,提升应用的性能和用户体验。

登录后查看全文
热门项目推荐
相关项目推荐