圖片選擇和圖片瀏覽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)