TakePhoto-輕量級Android照片處理框架

TakePhotoV2.0已發(fā)布,詳見《TakePhoto-輕量級Android照片處理框架V2.0發(fā)布

TakePhoto 簡介

  • 支持以拍照的方式獲取照片
  • 支持從相冊選擇照片
  • 支持對照片進行裁切
  • 支持對照片進行壓縮
  • 支持對裁切及壓縮參數自定義
  • 支持因拍照Activity被回收后的自動恢復

GitHub地址: https://github.com/crazycodeboy/TakePhoto

如何使用

使用TakePhoto有以下兩種方式:

方式一:通過繼承的方式

  1. 繼承TakePhotoActivity、TakePhotoFragmentActivity、TakePhotoFragment三者之一。
  2. 通過getTakePhoto()獲取TakePhoto實例進行相關操作。
  3. 重寫以下方法獲取結果
void takeSuccess(String imagePath);  
void takeFail(String msg);
void takeCancel();

此方式使用簡單,滿足的大部分的使用需求,具體使用詳見simple。如果通過繼承的方式無法滿足實際項目的使用,可以通過下面介紹的方式。

方式二:通過組裝的方式

  1. 獲取TakePhoto實例TakePhoto takePhoto=new TakePhotoImpl(getActivity(),this);
  2. onCreate,onActivityResult,onSaveInstanceState方法中調用TakePhoto對用的方法。
  3. 調用TakePhoto實例進行相關操作。
  4. TakeResultListener相關方法中獲取結果。

關于壓縮照片

你可以選擇是否對照片進行壓縮處理。

 /**
  * 啟用照片壓縮
  * @param config 壓縮照片配置
  * @param showCompressDialog 壓縮時是否顯示進度對話框
  * @return 
  */
 TakePhoto onEnableCompress(CompressConfig config,boolean showCompressDialog);

eg:

getTakePhoto().onEnableCompress(new
 CompressConfig.Builder().setMaxSize(50*1024).setMaxPixel(800).create(),
true).onPicSelectCrop(imageUri);

如果你啟用了照片壓縮,TakePhoto會使用CompressImage對照片進行壓縮處理,CompressImage目前支持對照片的尺寸以及照片的質量進行壓縮。默認情況下,CompressImage開啟了尺寸與質量雙重壓縮,
你可以通過CompressConfig.Builder對照片壓縮后的尺寸以及質量進行相關設置。如果你想改變壓縮的方式可以通過CompressConfig.Builder進行相關設置。

關于兼容性問題

TakePhoto是基于Android官方標準API編寫的,適配了目前市場上主流的Rom。如果你在使用過程中發(fā)現了適配問題,可以提交Issues。

  1. 為適配部分手機拍照時會回收Activity,TakePhoto在onSaveInstanceStateonCreate做了相應的恢復處理。
  2. 為適配部分手機拍照或從相冊選擇照片時屏幕方向會發(fā)生轉變,從而導致拍照失敗的問題,可以在AndroidManifest.xml中對使用了TakePhoto的Activity添加android:configChanges="orientation|keyboardHidden|screenSize"配置。
    eg:
<activity
    android:name=".MainActivity"
    android:screenOrientation="portrait"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

在項目中使用

為方便大家使用,現已將TakePhoto發(fā)布到JCenter(如果你對如何將項目發(fā)布到JCenter感興趣可以參考:《教你輕松將Android library 發(fā)布到JCenter)》
Gradle:

    compile 'com.jph.takephoto:takephoto_library:1.0.1'

Maven:

<dependency>
  <groupId>com.jph.takephoto</groupId>
  <artifactId>takephoto_library</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>

最后

如果你對TakePhoto有更好的建議或想改造它,歡迎大家Fork and Pull requests

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容