首页
/ 从零开始使用PictureSelector Library:新手入门完全指南

从零开始使用PictureSelector Library:新手入门完全指南

2026-02-05 04:59:44作者:瞿蔚英Wynne

你是否还在为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到你的项目中,提升应用的图片处理体验!

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