从零开始使用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到你的项目中,提升应用的图片处理体验!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00















