1. 程式人生 > >TakePhoto-輕量級Android照片處理框架

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

TakePhotoV2.0已釋出,詳見《TakePhoto-輕量級Android照片處理框架V2.0釋出》

  • 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。如果你在使用過程中發現了適配問題,可以提交Issues。
1. 為適配部分手機拍照時會回收Activity,TakePhoto在onSaveInstanceState與 onCreate做了相應的恢復處理。
2. 為適配部分手機拍照或從相簿選擇照片時螢幕方向會發生轉變,從而導致拍照失敗的問題,可以在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釋出到JCenter(如果你對如何將專案釋出到JCenter感興趣可以參考:《教你輕鬆將Android library 釋出到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。