一款用於在Android裝置上獲取照片(拍照或從相簿、檔案中選擇)、裁剪圖片、壓縮圖片的開源工具庫
效果展示:
TakePhoto 包括以下功能:
- 支援通過相機拍照獲取圖片
- 支援從相簿選擇圖片
- 支援從檔案選擇圖片
- 支援批量圖片選取
- 支援圖片壓縮以及批量圖片壓縮
- 支援圖片裁切以及批量圖片裁切
- 支援照片旋轉角度自動糾正
- 支援自動許可權管理(無需關心SD卡及攝像頭許可權等問題)
- 支援對裁剪及壓縮引數個性化配置
- 提供自帶裁剪工具(可選)
- 支援智慧選取及裁剪異常處理
- 支援因拍照Activity被回收後的自動恢復
- 支援Android7.0
- +支援多種壓縮工具
使用TakePhoto有以下兩種方式:
方式一:通過繼承的方式三者之一。
- 繼承TakePhotoActivity
- TakePhotoFragmentActivity
TakePhotoFragment
通過getTakePhoto()
獲取TakePhoto
例項進行相關操作。
重寫以下方法獲取結果void takeSuccess(TResult result); void takeFail(TResult result,String msg); void takeCancel();複製程式碼
方式二:通過組裝的方式
在相對應的類中進行新增程式碼1.實現TakePhoto.TakeResultListener,InvokeListener
介面。2.在 onCreate,onActivityResult,onSaveInstanceState
方法中呼叫TakePhoto對用的方法。- 3.重寫onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
壓縮圖片
你可以選擇是否對圖片進行壓縮處理,你只需要告訴它你是否要啟用壓縮功能以及CompressConfig即可
API
/**
* 啟用圖片壓縮
* @param config 壓縮圖片配置
* @param showCompressDialog 壓縮時是否顯示進度對話方塊
* @return
*/
void onEnableCompress(CompressConfig config,boolean showCompressDialog);複製程式碼
Usage:
TakePhoto takePhoto=getTakePhoto();
takePhoto.onEnableCompress(compressConfig,true);
takePhoto.onPickFromGallery();複製程式碼
相容性
Android6.0
由於Android6.0新增了"執行時許可權控制(Runtime Permissions)",為了應對這一改變,TakePhoto加入和自動許可權管理,當TakePhoto檢測到需要許可權時,TakePhoto會自動申請許可權,所以小夥伴們不用擔心許可權的使用問題。
Android7.0
在Android N中,Android 框架執行了 StrictMode,應用間共享檔案和以前也有所區別。為了適配Android7.0的改變,同時也為了方便大家使用TakePhoto,TakePhoto會自動根據手機的Android版本自行適配,小夥伴們依舊可以向TakePhoto傳遞Uri imageUri = Uri.fromFile(file);
型別的Uri而不用擔心相容性問題。- TakePhoto在深度相容性方面的測試
部落格地址:
專案地址:
相信自己,沒有做不到的,只有想不到的
如果你覺得此文對您有所幫助,歡迎入群 QQ交流群 :232203809
微信公眾號:終端研發部