【Pictureselector 选择、查看图片】

一款Android平台的开源图片选择器,支持多种媒体类型的选择、剪切、压缩等功能,并提供丰富的配置选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开源库地址

https://github.com/LuckSiege/PictureSelector

Android平台的图片选择器,支持从相册中获取图片、视频、音频和照片,剪切(单张或多张剪切)、压缩、主题自定义配置等功能,支持动态访问和开源图片选择适用于Android 5.0+系统的框架

一、导包及配置

 //选择图片,查看图片
 api 'io.github.lucksiege:pictureselector:v2.7.3-rc10'

二、使用

1、调用相机

 PictureSelector.create(this)
                .openCamera(PictureMimeType.ofImage())
                .compress(true)
                .synOrAsy(true)//同步true或异步false 压缩 默认同步
                .compressSavePath(getCompressPath(mContext))//压缩图片自定义保存地址
                .loadImageEngine(GlideEngine.createGlideEngine()) // Please refer to the Demo GlideEngine.java
                .forResult(PictureConfig.REQUEST_CAMERA);

2、调用相册

  PictureCacheManager.deleteAllCacheDirRefreshFile(mContext);//清除图库缓存产生的临时文件

  PictureSelector.create(this)
                 .openGallery(PictureMimeType.ofImage())
                 .compress(true)
                 .isPageStrategy(false)
                 .synOrAsy(true)//同步true或异步false 压缩 默认同步
                 .maxSelectNum(1)// 最大图片选择数量
                 .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选
                 .isCamera(false)// 是否显示拍照按钮
                 .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                 .compressSavePath(getCompressPath(mContext))//压缩图片自定义保存地址
                 .loadImageEngine(GlideEngine.createGlideEngine()) // Please refer to the Demo GlideEngine.java
                 .forResult(PictureConfig.CHOOSE_REQUEST);

3、返回处理

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        //执行这个方法需要在依附的activity上调用,否则不会执行该方法
        if (resultCode == RESULT_OK) {
            //相机相册返回
            switch (requestCode) {
                case PictureConfig.CHOOSE_REQUEST:
                case PictureConfig.REQUEST_CAMERA:
                    List<LocalMedia> phoneList = PictureSelector.obtainMultipleResult(data);

                    for (LocalMedia localMedia : phoneList) {


                        String path = "";
                        if (SystemUtil.getSystemVersion().equals("10")) {
                            //AndroidQ 该字段仅在Android Q版本中返回
                            path = localMedia.getAndroidQToPath();
                        } else {
                            //真正的路径,但你不能从AndroidQ获得访问
                            //path = localMedia.getCompressPath();
                            path = localMedia.getRealPath();
                        }

                        Log.i(TAG, "onActivityResult: " + path);
                        if (!TextUtils.isEmpty(path)) {

                          //todo 处理返回的path

                        }
                    }
                    break;
                default:
                    break;
            }
        }
    }

三、其他属性

// 进入相册 以下是例子:用不到的api可以不写
 PictureSelector.create(MainActivity.this)
 	.openGallery()//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
 	.theme()//主题样式(不设置为默认样式) 也可参考demo values/styles下 例如:R.style.picture.white.style
 	.maxSelectNum()// 最大图片选择数量 int
 	.minSelectNum()// 最小选择数量 int
	.imageSpanCount(4)// 每行显示个数 int
 	.selectionMode()// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
 	.previewImage()// 是否可预览图片 true or false
 	.previewVideo()// 是否可预览视频 true or false
	.enablePreviewAudio() // 是否可播放音频 true or false
 	.isCamera()// 是否显示拍照按钮 true or false
	.imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
	.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
	.sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
	.setOutputCameraPath("/CustomPath")// 自定义拍照保存路径,可不填
 	.enableCrop()// 是否裁剪 true or false
 	.compress()// 是否压缩 true or false
 	.glideOverride()// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
 	.withAspectRatio()// int 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
 	.hideBottomControls()// 是否显示uCrop工具栏,默认不显示 true or false
 	.isGif()// 是否显示gif图片 true or false
	.compressSavePath(getPath())//压缩图片保存地址
 	.freeStyleCropEnabled()// 裁剪框是否可拖拽 true or false
 	.circleDimmedLayer()// 是否圆形裁剪 true or false
 	.showCropFrame()// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
 	.showCropGrid()// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
 	.openClickSound()// 是否开启点击声音 true or false
 	.selectionMedia()// 是否传入已选图片 List<LocalMedia> list
 	.previewEggs()// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
 	.cropCompressQuality()// 裁剪压缩质量 默认90 int
 	.minimumCompressSize(100)// 小于100kb的图片不压缩 
 	.synOrAsy(true)//同步true或异步false 压缩 默认同步
 	.cropWH()// 裁剪宽高比,设置如果大于图片本身宽高则无效 int 
 	.rotateEnabled() // 裁剪是否可旋转图片 true or false
 	.scaleEnabled()// 裁剪是否可放大缩小图片 true or false
 	.videoQuality()// 视频录制质量 0 or 1 int
	.videoMaxSecond(15)// 显示多少秒以内的视频or音频也可适用 int 
    .videoMinSecond(10)// 显示多少秒以内的视频or音频也可适用 int 
	.recordVideoSecond()//视频秒数录制 默认60s int
	.isDragFrame(false)// 是否可拖动裁剪框(固定)
 	.forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code

四、参考

Android 选择图片、上传图片之PictureSelector

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值