2026-05-18 15:18:05 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 15:18:05 +08:00
2026-05-18 14:30:24 +08:00
2026-05-18 15:18:05 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 13:32:51 +08:00
2026-05-18 14:53:14 +08:00
2026-05-18 15:18:05 +08:00

Luban Imager / 鲁班压图

Luban Imager 是一个基于 Flutter 的一键图片压缩 App,目标是把优秀的 Luban 图片压缩能力包装成一个简单、直接、适合日常使用的小工具:选择图片后自动压缩、预览结果,再保存或分享。

截图

鲁班压图浅色与暗黑模式截图

致谢

首先感谢上游 Curzibn/Luban 项目。Luban 提供了接近微信朋友圈压缩策略的 Android 图片压缩能力,本项目的 Android 端基于 top.zibin:luban:2.0.1 工作,并在此基础上补充了 Flutter 界面、系统图片选择/分享、压缩结果预览、覆盖原图等 App 侧能力。

本项目不是 Luban 官方 App。如果你需要压缩算法本身、Android 库接入方式或上游实现细节,请优先参考 Luban 原仓库。

主要功能

  • 一键压缩:选择图片后自动执行 Luban 风格压缩,不需要手动填写质量、尺寸等参数。
  • 多入口导入:支持从 App 内选择图片,也支持从系统分享菜单接收图片。
  • 压缩结果预览:展示原图、压缩图、前后对比三种视图,并显示尺寸、文件大小和节省比例。
  • 暗黑模式:支持跟随系统设置自动切换浅色/暗黑模式。
  • 安全回退:如果压缩结果比原图更大,会自动使用原图,避免负优化。
  • 分享导出:压缩完成后可通过系统分享面板导出压缩图片。
  • 原位覆盖:对于系统授权可写入的图片来源,支持覆盖原图;覆盖前会进行两次确认。

平台支持

平台 状态 说明
Android 已支持 使用上游 Luban Android 库执行压缩,并已接入选择、分享、覆盖等能力。
iOS 理论支持,未实机测试 iOS 端包含基于 ImageIO/UIKit 的 Luban 风格压缩实现,但作者目前没有 iPhone 设备,因此还没有经过真实设备验证。

技术实现

  • UI 使用 Flutter / Material 3。
  • Android 通过 MethodChannel 调用原生 Kotlin 代码,并使用 top.zibin:luban:2.0.1 压缩图片。
  • iOS 通过 MethodChannel 调用 Swift 代码,使用 ImageIO/UIKit 读取、缩放和编码图片。
  • 图片选择、分享和覆盖均尽量走系统能力,压缩过程在本地完成。

开发环境

建议使用 Flutter stable 版本。当前项目由 Flutter 模板生成,pubspec.yaml 中 Dart SDK 约束为:

sdk: ^3.11.5

准备依赖:

flutter pub get

运行测试:

flutter test

本地运行:

flutter run

编译

Android

调试安装包:

flutter build apk --debug

发布安装包:

flutter build apk --release

按 CPU 架构拆分发布安装包:

flutter build apk --release --split-per-abi

发布 AAB

flutter build appbundle --release

发布前建议修改 android/app/build.gradle.kts 中的 applicationId,并配置自己的 release 签名。当前工程为了方便本地运行,release 构建仍使用 debug signing config。

iOS

iOS 构建需要 macOS、Xcode 和有效签名配置:

flutter build ios --release

注意:iOS 端目前只是理论支持,代码路径已经实现,但尚未在真实 iPhone 设备上验证。

License

本项目采用 Apache-2.0 License,见 LICENSE

上游 Luban 项目同样采用 Apache-2.0 License。Android 端依赖 Luban 时,请保留并遵守上游项目许可证要求。

S
Description
Luban Imager 是一个基于 Flutter 的一键图片压缩 App,目标是把优秀的 Luban 图片压缩能力包装成一个简单、直接、适合日常使用的小工具:选择图片后自动压缩、预览结果,再保存或分享。
Readme 1.3 MiB
Languages
Dart 48.1%
Swift 27.3%
Kotlin 24.6%