图片选择和图片浏览PictureBrowsPicker

PictureBrowsPicker
图片选择 Matisse
图片裁剪 cropiwa

媒体选择 PicturePicker

PicturePicker.from(this)
    // 选择类型
    // PicturePickerMediaType.ofImage() 图片
    // PicturePickerMediaType.ofImageNotGif() 图片不包含Gif
    // PicturePickerMediaType.ofVideo() 视频
    // PicturePickerMediaType.ofAll() 全部
    .choose(PicturePickerMediaType.ofAll())
    // 更改主题
    .theme(R.style.xxx)
    // 预览图片时点击图片隐藏其他控件(默认false不隐藏)
    .autoHideToolbarOnSingleTap(true)
    // 设置每个图片显示大小(px)
    .gridExpectedSize(300)
    // 图片加载器(默认GlideEngine)
    .imageEngine(new GlideEngine())
    // 选择框是否显示数字
    .countable(true)
    // 最大选择数量(默认为1)
    .maxSelectable(4)
    // 第一个参数为图片最大选择数量,第二个参数为视频最大选择数量
    .maxSelectablePerMediaType(1,1)
    // 是否可以拍照(默认false不可以)
    .capture(true)
    // 是否只显示指定格式媒体文件(默认false显示全部)
    .showSingleMediaType(true)
    // 设置拍照图片保存路径(以“/”结束,不包含图片名称)
    .saveImagePath(PictureData.SAVE_IMGE_PATH)
    // 图片过滤器(提供GifSizeFilter)
    .addFilter(new GifSizeFilter(200, 200, Integer.MAX_VALUE))
    // 图片不能大于多少M
    .maxOriginalSize(5)
    // 模糊图片(取值0-1,默认0.5)
    .thumbnailScale(0.3f)
    // 是否显示原图选项(默认false不显示)
    .originalEnable(true)
   // 原图按钮选择回调
    .setOnCheckedListener(new OnCheckedListener() {
      @Override
      public void onCheck(boolean isChecked) { } })
    // 设置已经选中图片
    .selectorList(List<Item>)
    // 设置每行列数(如果已经设置gridExpectedSize,此设置无效)
    .spanCount(4)
    // 图片选择
    .setOnSelectedListener(new OnSelectedListener() {
      @Override
      public void onSelected(@NonNull List<Uri> uriList, @NonNull List<String> pathList) { } })
    // 是否需要裁剪(默认false不需要)
    .crop(true)
    // 是否需要圆形裁剪(默认false不需要)
    .cropIsOval(true)
    // 裁剪的比例(默认1:1)
    .cropWidthAndrHeight(1, 1)
    // 图片裁剪后保存格式(默认Bitmap.CompressFormat.JPEG)
    .cropCompressFormat(Bitmap.CompressFormat.JPEG)
    // 图片裁剪后保存的清晰度(取值0-100,默认80)
    .cropQuality(80)
    // 指定裁剪图片Uri(选择图片裁剪不需要设置此项)
    .cropUri(uri)
    // 设置裁剪图片保存名称(以“.图片格式”结束,不包含图片路径)
    .cropSaveName("temp.jpg")
    // 裁剪图片后保存成功是否需要刷新媒体库(默认true刷新)
    .isRefresh(true)
    // 跳转必须是forResult
    .forResult(REQUEST_PICTURE_PICKER);
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == REQUEST_PICTURE_PICKER) {
            // 选中媒体
            List<Uri> uris = PicturePicker.obtainResult(data);
            List<String> paths = PicturePicker.obtainPathResult(data);
            List<Item> items = PicturePicker.obtainItemResult(data);
        }
    }

图片裁剪 PicturePicker

 PicturePicker.from(this)
    // 只裁剪图片
    .crop()
    // 裁剪图片Uri
    .cropUri(uri)
    // 裁剪图片Bitmap(如果设置了Uri,此设置无效)
    .cropBitmap(bitmap)
    // 是否需要圆形裁剪(默认false不需要)
    .cropIsOval(true)
    // 裁剪的比例(默认1:1)
    .cropWidthAndrHeight(1, 1)
    // 图片裁剪后保存格式(默认Bitmap.CompressFormat.JPEG)
    .cropCompressFormat(Bitmap.CompressFormat.JPEG)
    // 图片裁剪后保存的清晰度(取值0-100,默认80)
    .cropQuality(80)
    // 指定裁剪图片Uri(选择图片裁剪不需要设置此项)
    .cropUri(uri)
    // 设置裁剪图片保存名称(以“.图片格式”结束,不包含图片路径)
    .cropSaveName("temp.jpg")
    // 裁剪图片后保存成功是否需要刷新媒体库(默认true刷新)
    .isRefresh(true)
    // 跳转必须是onlyCropForResult
    .onlyCropForResult(REQUEST_PICTURE_CROP);

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == REQUEST_PICTURE_CROP) {
            // 裁剪成功
            Uri uri = PicturePicker.obtainCropResult(data);
            String path = PicturePicker.obtainCropPathResult(data);
        }
    }

图片浏览 PictureBrows

PictureBrows.build(this)
    // 设置图片or图片集合(可添加Base64图片,这个操作会清空所有图片只留下设置图片)
    .setImage(PictureData.IMAGE1)
    .setImages(getImages())
    // 添加图片or图片集合(在原有图片的基础上再继续添加图片)
    .addImages(getImages())
    .addImage(PictureData.IMAGE1)
    // 设置进入时展示第position张图片(以0开始)
    .setPosition(1)
    // 是否可以保存图片(默认false不可以保存)
    .isSave(true)
    // 设置图片保存路径(以“/”结束,不包含图片名称)
    .setSavePath(PictureData.SAVE_IMGE_PATH)
    // 保存图片成功是否需要刷新媒体库(默认刷新)
    .isRefresh(true)
    // 设置保存图片名称or名称集合(以“.图片格式”结束,不包含路径) 图片名称数量必须与图片数量对应
    .setName(String.format("JPEG_%s.jpg", PictureUtils.getDataTimeString()))
    .setNames(getNames())
    // 添加保存图片名称or名称集合
    .addName(String.format("JPEG_%s.jpg", PictureUtils.getDataTimeString()))
    .addNames(getNames())
    // 设置图片保存成功或失败监听
    .setSaveImageListener(new SaveImageListener() {
      @Override
      public void onSuccess(String absolutePath) {
        // 下载成功:absolutePath图片保存绝对路径
        // 如果页面有滑动,成功回调是你点击过下载的图片,不一定是当前显示图片
      }
  
      @Override
      public void onFail() { }
    })
    // 跳转
    .start();

图片帮助类 PictureUtils

// 保存图片,需要保存bitmap,保存的绝对路径path
// 返回值boolean:保存成功true,保存失败false
PictureUtils.saveImg(Bitmap bitmap, String path);

// 将字符串转换成Bitmap类型,需要转换成Bitmap的字符串string
// base64转Bitmap,返回值Bitmap
PictureUtils.stringToBitmap(String string);

// 同步媒体库,图片绝对路径filePath
PictureUtils.updateMedia(Context context, String filePath);

// 获取时间格式yyyyMMdd_HHmmss
// 返回值String
PictureUtils.getDataTimeString();

// 检查是否拥有某些权限permissions
// 返回值boolean:只有有一个没有授权返回false
PictureUtils.checkPermissionAllGranted(Context context, String[] permissions)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值