// PictureSelector图片选择
implementation 'com.github.xuexiangjys.PictureSelector:picture-core:1.0.5'
//需要裁剪时使用
implementation 'com.github.xuexiangjys.PictureSelector:picture-ucrop:1.0.5'
//==========图片选择===========//

    /**
     * 获取图片选择的配置
     *
     * @param fragment
     * @return
     */
    public static PictureSelectionModel getPictureSelector(Fragment fragment) {
        return PictureSelector.create(fragment)
                .openGallery(PictureMimeType.ofImage())
//                .theme(SettingUtils.isUseCustomTheme() ? R.style.XUIPictureStyle_Custom : R.style.XUIPictureStyle)
                .maxSelectNum(8)
                .minSelectNum(1)
                .selectionMode(PictureConfig.MULTIPLE)
                .previewImage(true)
                .isCamera(true)
                .enableCrop(false)
                .compress(true)
                .previewEggs(true);
    }

    public static PictureSelectionModel getPictureSelector(Activity activity) {
        return PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofImage())
//                .theme(SettingUtils.isUseCustomTheme() ? R.style.XUIPictureStyle_Custom : R.style.XUIPictureStyle)
                .maxSelectNum(8)
                .minSelectNum(1)
                .selectionMode(PictureConfig.MULTIPLE)
                .previewImage(true)
                .isCamera(true)
                .enableCrop(false)
                .compress(true)
                .previewEggs(true);
    }
Utils.getPictureSelector(this)
.enableCrop(true)//是否裁剪
.withAspectRatio(1, 1)//裁剪比例 如16:9 3:2 3:4 1:1可自定义
.cropWH(1,1)//裁剪宽高比,设置如果大于图片本身宽高则无效
.freeStyleCropEnabled(true)//裁剪框是否可拖拽
.scaleEnabled(true)//裁剪是否可放大缩小图片
.showCropGrid(true)//是否显示裁剪矩形网格 圆形裁剪时建议设为false
.cropCompressQuality(90)//裁剪压缩质量
.maxSelectNum(1)//最大图片选择数量
.selectionMode(PictureConfig.SINGLE)//多选or单选
.forResult(PictureConfig.CHOOSE_REQUEST);

回调使用:

 @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case PictureConfig.CHOOSE_REQUEST:
                    // 图片、视频、音频选择结果回调
                    List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
                    // 例如 LocalMedia 里面返回三种path
                    // 1.media.getPath(); 为原图path
                    // 2.media.getCutPath();为裁剪后path,需判断media.isCut();是否为true  注意:音视频除外
                    // 3.media.getCompressPath();为压缩后path,需判断media.isCompressed();是否为true  注意:音视频除外
                    // 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的
                    if (selectList.get(0).isCut()) upimg(selectList.get(0).getCompressPath());
                    else upimg(selectList.get(0).getPath());
//                    binding.rivHeadPic.setImageBitmap(BitmapFactory.decodeFile(selectList.get(0).getPath()));
                    break;
            }
        }
    }


API说明:

PictureSelector.create(MainActivity.this)
.openGallery(chooseMode)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.theme(themeId)//主题样式设置 具体参考values/styles用法:R.style.picture.white.style
.maxSelectNum(maxSelectNum)//最大图片选择数量
.minSelectNum(1)//最小选择数量
.selectionMode(cb_choose_mode.isChecked() ?
PictureConfig.MULTIPLE: PictureConfig.SINGLE)//多选or单选
.previewImage(cb_preview_img.isChecked())//是否可预览图片
.previewVideo(cb_preview_video.isChecked())//是否可预览视频
.compressGrade(Luban.THIRD_GEAR)// luban压缩档次,默认3档Luban.FIRST_GEAR、Luban.CUSTOM_GEAR
.isCamera(cb_isCamera.isChecked())//是否显示拍照按钮
.enableCrop(cb_crop.isChecked())//是否裁剪
.compress(cb_compress.isChecked())//是否压缩
.compressMode(compressMode)//系统自带or鲁班压缩.glideOverride(160,160)// glide加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.withAspectRatio(aspect_ratio_x,aspect_ratio_y)//裁剪比例 如16:9 3:2 3:4 1:1可自定义
.hideBottomControls(cb_hide.isChecked() ?false:true)//是否显示uCrop工具栏,默认不显示
.isGif(cb_isGif.isChecked())//是否显示gif图片
.freeStyleCropEnabled(cb_styleCrop.isChecked())//裁剪框是否可拖拽
.circleDimmedLayer(cb_crop_circular.isChecked())//是否圆形裁剪
.showCropFrame(cb_showCropFrame.isChecked())//是否显示裁剪矩形边框 圆形裁剪时建议设为false
.showCropGrid(cb_showCropGrid.isChecked())//是否显示裁剪矩形网格 圆形裁剪时建议设为false
.openClickSound(cb_voice.isChecked())//是否开启点击声音
.selectionMedia(selectList)//是否传入已选图片
.previewEggs(false)//预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中)
.isRemove(true)//是否移除图片列表已损坏的图片
.cropCompressQuality(90)//裁剪压缩质量
.compressMaxKB(1024)//压缩最大值kb compressGrade()为Luban.CUSTOM_GEAR有效
.compressWH(4,5)//压缩宽高比compressGrade()为Luban.CUSTOM_GEAR有效
.cropWH(4,5)//裁剪宽高比,设置如果大于图片本身宽高则无效
.rotateEnabled(false)//裁剪是否可旋转图片
.scaleEnabled(true)//裁剪是否可放大缩小图片
.videoQuality(1)//视频录制质量0 or 1
.videoSecond(0)//显示多少秒以内的视频
.forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部

Copyright © 2016-2025.By阿狸小乖 版权所有    主页

滇ICP备17010414号-1