UTakePhoto.with(mActivity).openCamera().build(new ITakePhotoResult() {
@Override
public void takeSuccess(List<Uri> uriList) {
}
@Override
public void takeFailure(TakeException ex) {
}
@Override
public void takeCancel() {
}
});
複製代碼
或者這樣android
UTakePhoto.with(mFragment)
.openAlbum()
.setCrop(new CropOptions.Builder().create())
.setCompressConfig(new CompressConfig.Builder().create())
.build(new ITakePhotoResult() {
@Override
public void takeSuccess(List<Uri> uriList) {
}
@Override
public void takeFailure(TakeException ex) {
}
@Override
public void takeCancel() {
}
});
複製代碼
Gradle:git
implementation 'com.sl.utakephoto:uTakePhoto:1.0.6'
複製代碼
Mavengithub
<dependency>
<groupId>com.sl.utakephoto</groupId>
<artifactId>uTakePhoto</artifactId>
<version>1.0.6</version>
<type>pom</type>
</dependency>
複製代碼
圖片默認儲存在context.getExternalFilesDir("Pictures") 目錄下,不須要指定的話,一行代碼足矣:bash
UTakePhoto.with(mActivity).openCamera().build(new ITakePhotoResult() {
@Override
public void takeSuccess(List<Uri> uriList) {
}
@Override
public void takeFailure(TakeException ex) {
}
@Override
public void takeCancel() {
}
});
複製代碼
UTakePhoto.init();能夠在application中配置壓縮和裁剪app
public static void init(CompressConfig compressConfig, CropOptions cropOptions) {
mCompressConfig = compressConfig;
mCropOptions = cropOptions;
}
複製代碼
/**
* 默認儲存在getExternalFilesDir(Pictures)目錄下
*
* @return
*/
public TakePhotoManager openCamera() {
return openCamera(null, null, null);
}
/**
* 打開系統相機,輸出路徑自定義
*
* @param outPutUri 拍照路徑
* @return
*/
public TakePhotoManager openCamera(Uri outPutUri) {
return openCamera(outPutUri, null, null);
}
/**
* 打開系統相機,輸出路徑自定義
* 在androidQ上建議採用這個方法,由於若是採用傳入mediaStore的Uri的方式,會在相冊裏建立一個空的img
*
* @param relativePath androidQ上清單文件中android:requestLegacyExternalStorage="true"
* 則relativePath 必須以 Pictures/DCIM 爲跟路徑;
* Q如下默認根路徑是Environment.getExternalStorageDirectory()
* @return
*/
public TakePhotoManager openCamera(String relativePath) {
return openCamera(null, relativePath, null);
}
複製代碼
若是想獲取拍照圖片的話,傳入指定Uri或者使用relativePath兩種方式。 relativePath對應androidQ中MediaStore.Images.Media.RELATIVE_PATH, androidQ如下的以Environment.getExternalStorageDirectory()爲根路徑。根據須要選擇ide
默認打開相冊Intentui
/**
* 打開相冊
*
* @return
*/
public TakePhotoManager openAlbum() {
return openAlbum(null);
}
/**
* 打開指定相冊
*
* @param intent 經過Intent跳轉的時候,須要返回setResult(RESULT_OK,Intent.setData(Uri)))
* @return this
*/
public TakePhotoManager openAlbum(Intent intent) {
takeType = TYPE_SELECT_IMAGE;
this.intent = intent;
return this;
}
複製代碼
CropOptions cropOptions = new CropOptions.Builder()
.setAspectX(1).setAspectY(1)
.setOutputX(100).setOutputY(1)
.setWithOwnCrop(true)//使用系統裁剪仍是自帶裁剪
.create();
UTakePhoto.with(mActivity).openCamera().setCrop(cropOptions)
複製代碼
壓縮採用luban壓縮,計算inSampleSize,簡單壓縮,若是不想使用,能夠本身拿到圖片處理this
CompressConfig compressConfig = new CompressConfig.Builder()
.setFocusAlpha(false)//是否支持透明度
.setLeastCompressSize(200)//最小壓縮尺寸
.setTargetUri()//壓縮圖片儲存路徑
.create();
UTakePhoto.with(mActivity).openCamera().setCompressConfig(compressConfig)
複製代碼
new ITakePhotoResult() {
@Override
public void takeSuccess(List<Uri> uriList) {
//主線程
}
@Override
public void takeFailure(TakeException ex) {
}
@Override
public void takeCancel() {
}
}
複製代碼
既然來了,留下個喜歡再走吧,鼓勵下我,哈哈spa
Github,線程