开源库地址
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
四、参考