摘要:最近在重構(gòu)的圖片模塊,就順便寫了這個圖片操作庫,其中基本涵蓋了開發(fā)中所有的圖片操作。項目地址這個庫基本上封裝了中圖片的所有操作,使用過程中如有問題歡迎。
最近在重構(gòu)APP的圖片模塊,就順便寫了這個圖片操作庫,其中基本涵蓋了APP開發(fā)中所有的圖片操作。
該圖片庫包含的功能圖片加載庫的二次封裝;
相冊功能
從相冊/相機選擇照片并裁剪;
圖片壓縮;
上傳圖片到服務(wù)器;
上傳圖片到七牛;
模塊介紹 圖片加載庫的二次封裝對Fresco, ImageLoader, Glide進行了統(tǒng)一的封裝,當(dāng)然也可進行擴展。具體可參見ImageLoaderManager
相冊功能類似朋友圈選擇照片,提供了簡潔的使用接口,可快速實現(xiàn)選擇多張照片的功能;
// 跳轉(zhuǎn)到相冊頁面 new PhotoPicker.Builder() .setIsDialog(false) .setIsShowCamera(false) .setMaxPhotoCount(3) .setSelectedPhotos(selectedPhotos) .builder().chooseImage(AlbumActivity.this); // 獲取選擇的照片 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PhotoPicker.REQUEST_CODE_CHOOSE_PHOTO && data != null) { selectedPhotos = data.getStringArrayListExtra(PhotoPicker.SELECTED_PHOTOS); if (selectedPhotos != null && selectedPhotos.size() > 0) { // 處理邏輯 } } }
PS:這里的處理邏輯參考了PhotoPicker
從相冊/相機選擇照片這可能是APP不可或缺的一個小功能,不過其中也存在許多兼容性的坑,為了便于以后使用,將其封裝成了一個簡單的工具類,通過簡單的幾行代碼即可實現(xiàn)更換頭像的操作。
// 選擇照片后是否需要裁剪 ChoosePhotoManager.getInstance().setAutoCrop(true); // 從相機獲取照片 ChoosePhotoManager.getInstance().choosePhotoFromCamera(ChooseAndCropImageActivity.this); // 從相冊選擇照片 ChoosePhotoManager.getInstance().choosePhotoFromAlbum(ChooseAndCropImageActivity.this); // 監(jiān)聽選擇照片的結(jié)果 ChoosePhotoManager.getInstance().setChoosePhotoListener(new OnChoosePhotoListener() { @Override public void choosePhotoFromAlbum(Uri uri, String errMsg) { // 從相冊選擇的照片路徑 } @Override public void choosePhotoFromCamera(Uri uri, String errMsg) { // 拍照獲取的的照片路徑 } @Override public void cropPhoto(Uri uri, String errMsg) { // 裁剪之后的照片路徑 } });圖片壓縮
為了更好的用戶體驗,減小服務(wù)器的存儲壓力,在上傳圖片之前我們應(yīng)該進行適當(dāng)?shù)膲嚎s,這里采用Luban庫,通過簡單的調(diào)用即可在上傳圖片前壓縮。
void compressImage(Context context, String filePath, OnCompressListener listener)上傳圖片到服務(wù)器
既然選擇了照片,那肯定需要上傳操作,這里為了減小對其他開源庫的依賴,使用了HttpURLConnection實現(xiàn)的上傳操作(當(dāng)然,OKHttp的上傳文件更簡單)。
// 默認開啟了圖片壓縮, 當(dāng)然可通過兩個重載方法進行控制 uploadToInnerServer(Activity context, String serverAddress, String filePath, final OnUploadListener listener)上傳圖片到七牛
圖片上傳的方式有兩種,一種是上傳到公司服務(wù)器,然后由公司服務(wù)器上傳到圖片服務(wù)器,另一種就是直接從客戶端上傳到圖片服務(wù)器。上傳到七牛就是第二種方案:先從公司服務(wù)器獲取token, 然后上傳圖片到七牛服務(wù)器。
void uploadToQiNiu(Activity context, String token, String filePath, OnUploadToQiNiuListener listener)項目地址
ImageSet
這個庫基本上封裝了APP中圖片的所有操作,使用過程中如有問題歡迎issue。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71159.html
摘要:轉(zhuǎn)載來源包管理器管理著庫,并提供讀取和打包它們的工具。能構(gòu)建更好應(yīng)用的客戶端包管理器。一個整合和的最佳思想,使開發(fā)者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數(shù)據(jù)。 轉(zhuǎn)載來源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫,并提供讀取和打包它們的工具。?npm – npm 是 javasc...
摘要:轉(zhuǎn)載來源包管理器管理著庫,并提供讀取和打包它們的工具。能構(gòu)建更好應(yīng)用的客戶端包管理器。一個整合和的最佳思想,使開發(fā)者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數(shù)據(jù)。 轉(zhuǎn)載來源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫,并提供讀取和打包它們的工具。?npm – npm 是 javasc...
閱讀 3346·2021-11-12 10:36
閱讀 2511·2021-11-02 14:43
閱讀 2179·2019-08-30 14:23
閱讀 3490·2019-08-30 13:08
閱讀 949·2019-08-28 18:09
閱讀 3170·2019-08-26 12:22
閱讀 3190·2019-08-23 18:24
閱讀 2042·2019-08-23 18:17