圖片選擇和圖片瀏覽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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章