亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

簡(jiǎn)單 強(qiáng)大的圖片操作庫(kù)

U2FsdGVkX1x / 2160人閱讀

摘要:最近在重構(gòu)的圖片模塊,就順便寫了這個(gè)圖片操作庫(kù),其中基本涵蓋了開(kāi)發(fā)中所有的圖片操作。項(xiàng)目地址這個(gè)庫(kù)基本上封裝了中圖片的所有操作,使用過(guò)程中如有問(wèn)題歡迎。

最近在重構(gòu)APP的圖片模塊,就順便寫了這個(gè)圖片操作庫(kù),其中基本涵蓋了APP開(kāi)發(fā)中所有的圖片操作。

該圖片庫(kù)包含的功能

圖片加載庫(kù)的二次封裝;

相冊(cè)功能

從相冊(cè)/相機(jī)選擇照片并裁剪;

圖片壓縮;

上傳圖片到服務(wù)器;

上傳圖片到七牛;

模塊介紹 圖片加載庫(kù)的二次封裝

對(duì)Fresco, ImageLoader, Glide進(jìn)行了統(tǒng)一的封裝,當(dāng)然也可進(jìn)行擴(kuò)展。具體可參見(jiàn)ImageLoaderManager

相冊(cè)功能

類似朋友圈選擇照片,提供了簡(jiǎn)潔的使用接口,可快速實(shí)現(xiàn)選擇多張照片的功能;

// 跳轉(zhuǎn)到相冊(cè)頁(yè)面
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

從相冊(cè)/相機(jī)選擇照片

這可能是APP不可或缺的一個(gè)小功能,不過(guò)其中也存在許多兼容性的坑,為了便于以后使用,將其封裝成了一個(gè)簡(jiǎn)單的工具類,通過(guò)簡(jiǎn)單的幾行代碼即可實(shí)現(xiàn)更換頭像的操作。

// 選擇照片后是否需要裁剪
ChoosePhotoManager.getInstance().setAutoCrop(true);
// 從相機(jī)獲取照片
ChoosePhotoManager.getInstance().choosePhotoFromCamera(ChooseAndCropImageActivity.this);
// 從相冊(cè)選擇照片
ChoosePhotoManager.getInstance().choosePhotoFromAlbum(ChooseAndCropImageActivity.this);
// 監(jiān)聽(tīng)選擇照片的結(jié)果
ChoosePhotoManager.getInstance().setChoosePhotoListener(new OnChoosePhotoListener() {
   
    @Override
    public void choosePhotoFromAlbum(Uri uri, String errMsg) {
        // 從相冊(cè)選擇的照片路徑
    }
    
    @Override
    public void choosePhotoFromCamera(Uri uri, String errMsg) {
        // 拍照獲取的的照片路徑
    }
    
    @Override
    public void cropPhoto(Uri uri, String errMsg) {
        // 裁剪之后的照片路徑
    }
});
圖片壓縮

為了更好的用戶體驗(yàn),減小服務(wù)器的存儲(chǔ)壓力,在上傳圖片之前我們應(yīng)該進(jìn)行適當(dāng)?shù)膲嚎s,這里采用Luban庫(kù),通過(guò)簡(jiǎn)單的調(diào)用即可在上傳圖片前壓縮。

void compressImage(Context context, String filePath, OnCompressListener listener)
上傳圖片到服務(wù)器

既然選擇了照片,那肯定需要上傳操作,這里為了減小對(duì)其他開(kāi)源庫(kù)的依賴,使用了HttpURLConnection實(shí)現(xiàn)的上傳操作(當(dāng)然,OKHttp的上傳文件更簡(jiǎn)單)。

// 默認(rèn)開(kāi)啟了圖片壓縮, 當(dāng)然可通過(guò)兩個(gè)重載方法進(jìn)行控制
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)

項(xiàng)目地址

ImageSet

這個(gè)庫(kù)基本上封裝了APP中圖片的所有操作,使用過(guò)程中如有問(wèn)題歡迎issue。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71159.html

相關(guān)文章

  • javascript功能插件大集合 前端常用插件 js常用插件

    摘要:轉(zhuǎn)載來(lái)源包管理器管理著庫(kù),并提供讀取和打包它們的工具。能構(gòu)建更好應(yīng)用的客戶端包管理器。一個(gè)整合和的最佳思想,使開(kāi)發(fā)者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數(shù)據(jù)。 轉(zhuǎn)載來(lái)源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫(kù),并提供讀取和打包它們的工具。?npm – npm 是 javasc...

    netmou 評(píng)論0 收藏0
  • javascript功能插件大集合 前端常用插件 js常用插件

    摘要:轉(zhuǎn)載來(lái)源包管理器管理著庫(kù),并提供讀取和打包它們的工具。能構(gòu)建更好應(yīng)用的客戶端包管理器。一個(gè)整合和的最佳思想,使開(kāi)發(fā)者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數(shù)據(jù)。 轉(zhuǎn)載來(lái)源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫(kù),并提供讀取和打包它們的工具。?npm – npm 是 javasc...

    Hydrogen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<