从零开始使用PictureSelector Library:新手入门完全指南
你是否还在为Android应用中的图片选择功能开发而烦恼?是否想要一个既支持相册选择又能拍照,还能进行裁剪和压缩的一站式解决方案?PictureSelector Library(图片选择器)正是为解决这些问题而生。本文将带你从零开始,轻松掌握这个强大工具的使用方法,让你的应用图片处理功能更专业、用户体验更出色。
关于PictureSelector Library
PictureSelector Library是一款针对Android平台的开源图片选择框架,支持从相册获取图片、视频、音频,也可以直接拍照,还具备裁剪(单图或多图裁剪)、压缩、主题自定义配置等功能,并且完美支持动态获取权限和Android 5.0及以上系统。
官方文档:README.md
中文文档:README_CN.md
准备工作:下载与安装
1. 下载Demo体验
在开始集成前,建议先下载Demo体验一下功能:app/demo/demo_2023-12-17_060744_v3.11.2.apk
2. 集成到项目
使用Gradle集成是最便捷的方式,在你的build.gradle文件中添加以下依赖:
repositories {
google()
mavenCentral()
}
dependencies {
// PictureSelector 基础 (必须)
implementation 'io.github.lucksiege:pictureselector:v3.11.2'
// 图片压缩 (按需引入)
implementation 'io.github.lucksiege:compress:v3.11.2'
// 图片裁剪 (按需引入)
implementation 'io.github.lucksiege:ucrop:v3.11.2'
// 自定义相机 (按需引入)
implementation 'io.github.lucksiege:camerax:v3.11.2'
}
功能概览
PictureSelector提供了丰富的功能,让我们先通过几张截图了解一下它的界面和 capabilities:
| 功能列表 |
|---|
![]() |
| 默认风格 | 预览 | 多图裁剪 |
|---|---|---|
![]() |
![]() |
![]() |
| 数字风格 | 预览 | 多图裁剪 |
|---|---|---|
![]() |
![]() |
![]() |
基础使用
1. 添加权限
在AndroidManifest.xml中添加必要的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- Android 13及以上版本需要添加细化存储权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
对于Android 11及以上使用相机,还需要在AndroidManifest.xml中添加:
<queries package="${applicationId}">
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE">
</action>
</intent>
<intent>
<action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
</action>
</intent>
</queries>
2. 初始化ImageEngine
PictureSelector需要图片加载引擎来显示图片,支持Glide、Picasso和Coil等主流图片加载库:
3. 从相册选择图片
以下是从相册选择图片的基本代码示例:
PictureSelector.create(this)
.openGallery(SelectMimeType.ofImage())
.setImageEngine(GlideEngine.createGlideEngine())
.forResult(new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(ArrayList<LocalMedia> result) {
// 处理选择结果
}
@Override
public void onCancel() {
// 处理取消操作
}
});
4. 单独拍照
如果只需要拍照功能,可以使用以下代码:
PictureSelector.create(this)
.openCamera(SelectMimeType.ofImage())
.forResult(new OnResultCallbackListener<LocalMedia>() {
@Override
public void onResult(ArrayList<LocalMedia> result) {
// 处理拍照结果
}
@Override
public void onCancel() {
// 处理取消操作
}
});
进阶使用
1. 自定义主题
PictureSelector支持自定义主题,你可以通过setSelectorUIStyle()方法来设置:
.setSelectorUIStyle();
或者,你也可以通过重载布局来自定义界面:
.setInjectLayoutResourceListener(new OnInjectLayoutResourceListener() {
@Override
public int getLayoutResourceId(Context context, int resourceSource) {
return 0;
}
2. 图片压缩
如果需要对选择的图片进行压缩,可以设置压缩引擎:
.setCompressEngine(new CompressFileEngine() {
@Override
public void onStartCompress(Context context, ArrayList<Uri> source, OnKeyValueResultCallbackListener call){
// 压缩逻辑
}
});
3. 图片裁剪
设置裁剪功能:
.setCropEngine(new CropFileEngine() {
@Override
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
// 裁剪逻辑
}
});
更多功能展示
除了上述基础功能,PictureSelector还有许多其他强大的特性:
| 白色风格 | 预览 | 单图裁剪 |
|---|---|---|
![]() |
![]() |
![]() |
| 全新风格 | 预览 | 多图裁剪 |
|---|---|---|
![]() |
![]() |
![]() |
| 相册目录 | 单选模式 | 头像裁剪 |
|---|---|---|
![]() |
![]() |
![]() |
混淆配置
为了保证PictureSelector在release版本中正常工作,需要添加以下混淆规则到你的proguard-rules.pro文件:
-keep class com.luck.picture.lib.** { *; }
// 如果引入了Camerax库请添加混淆
-keep class com.luck.lib.camerax.** { *; }
// 如果引入了Ucrop库请添加混淆
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
常见问题
如果你在使用过程中遇到问题,可以查阅:
结语
通过本文的介绍,你应该已经掌握了PictureSelector Library的基本使用方法。这是一个功能强大且灵活的图片选择框架,能够满足大多数Android应用的图片处理需求。
如果你想深入了解更多高级功能,可以查阅官方文档:PictureSelector 3.0 功能api说明
希望这篇指南能帮助你快速集成PictureSelector到你的项目中,提升应用的图片处理体验!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00















