|
1 |
| -# TakePhoto |
2 |
| -拍照并裁切,从相册中选择照片并裁切 |
| 1 | +## [TakePhoto](https://github.com/crazycodeboy/TakePhoto) 简介 |
| 2 | +- 支持以拍照的方式获取照片 |
| 3 | +- 支持从相册选择照片 |
| 4 | +- 支持对照片进行裁切 |
| 5 | +- 支持对照片进行压缩 |
| 6 | +- 支持对裁切及压缩参数自定义 |
| 7 | +- 支持因拍照Activity被回收后的自动恢复 |
| 8 | + |
| 9 | +GitHub地址: [https://github.com/crazycodeboy/TakePhoto](https://github.com/crazycodeboy/TakePhoto) |
| 10 | +##如何使用 |
| 11 | +###使用TakePhoto有以下两种方式: |
| 12 | +**方式一:通过继承的方式** |
| 13 | +1. 继承TakePhotoActivity、TakePhotoFragmentActivity、TakePhotoFragment三者之一。 |
| 14 | +2. 通过`getTakePhoto()`获取TakePhoto实例进行相关操作。 |
| 15 | +3. 重写以下方法获取结果 |
| 16 | +```java |
| 17 | +void takeSuccess(String imagePath); |
| 18 | +void takeFail(String msg); |
| 19 | +void takeCancel(); |
| 20 | +``` |
| 21 | +此方式使用简单,满足的大部分的使用需求,具体使用详见simple。如果通过继承的方式无法满足实际项目的使用,可以通过下面介绍的方式。 |
| 22 | + |
| 23 | +**方式二:通过组装的方式** |
| 24 | +1. 获取TakePhoto实例`TakePhoto takePhoto=new TakePhotoImpl(getActivity(),this);` |
| 25 | +2. 在 `onCreate`,`onActivityResult`,`onSaveInstanceState`方法中调用TakePhoto对用的方法。 |
| 26 | +3. 调用TakePhoto实例进行相关操作。 |
| 27 | +4. 在`TakeResultListener`相关方法中获取结果。 |
| 28 | +###关于压缩照片 |
| 29 | +你可以选择是否对照片进行压缩处理。 |
| 30 | +```java |
| 31 | + /** |
| 32 | + * 启用照片压缩 |
| 33 | + * @param config 压缩照片配置 |
| 34 | + * @param showCompressDialog 压缩时是否显示进度对话框 |
| 35 | + * @return |
| 36 | + */ |
| 37 | + TakePhoto onEnableCompress(CompressConfig config,boolean showCompressDialog); |
| 38 | +``` |
| 39 | +eg: |
| 40 | +`getTakePhoto().onEnableCompress(new CompressConfig.Builder().setMaxSize(50*1024).setMaxPixel(800).create(),true).onPicSelectCrop(imageUri);` |
| 41 | +如果你启用了照片压缩,TakePhoto会使用`CompressImage`对照片进行压缩处理,CompressImage目前支持对照片的尺寸以及照片的质量进行压缩。默认情况下,CompressImage开启了尺寸与质量双重压缩, |
| 42 | +你可以通过CompressConfig.Builder对照片压缩后的尺寸以及质量进行相关设置。如果你想改变压缩的方式可以通过CompressConfig.Builder进行相关设置。 |
| 43 | +##关于兼容性问题 |
| 44 | +TakePhoto是基于Android官方标准API编写的,适配了目前市场上主流的Rom。如果你在使用过程中发现了适配问题,可以提交Issues。 |
| 45 | +1. 为适配部分手机拍照时会回收Activity,TakePhoto在`onSaveInstanceState`与 `onCreate`做了相应的恢复处理。 |
| 46 | +2. 为适配部分手机拍照或从相册选择照片时屏幕方向会发生转变,从而导致拍照失败的问题,可以在AndroidManifest.xml中对使用了TakePhoto的Activity添加android:configChanges="orientation|keyboardHidden|screenSize"配置。 |
| 47 | +eg: |
| 48 | +``` |
| 49 | +<activity |
| 50 | + android:name=".MainActivity" |
| 51 | + android:screenOrientation="portrait" |
| 52 | + android:configChanges="orientation|keyboardHidden|screenSize" |
| 53 | + android:label="@string/app_name" > |
| 54 | + <intent-filter> |
| 55 | + <action android:name="android.intent.action.MAIN" /> |
| 56 | + <category android:name="android.intent.category.LAUNCHER" /> |
| 57 | + </intent-filter> |
| 58 | +</activity> |
| 59 | +``` |
| 60 | + |
| 61 | +##在项目中使用 |
| 62 | +为方便大家使用,现已将TakePhoto发布到JCenter(如果你对如何将项目发布到JCenter感兴趣可以参考:《[教你轻松将Android library 发布到JCenter](http://blog.csdn.net/fengyuzhengfan/article/details/51407009))》 |
| 63 | +Gradle: |
| 64 | +```groovy |
| 65 | + compile 'com.jph.takephoto:takephoto_library:1.0.1' |
| 66 | +``` |
| 67 | + |
| 68 | +Maven: |
| 69 | +```groovy |
| 70 | +<dependency> |
| 71 | + <groupId>com.jph.takephoto</groupId> |
| 72 | + <artifactId>takephoto_library</artifactId> |
| 73 | + <version>1.0.1</version> |
| 74 | + <type>pom</type> |
| 75 | +</dependency> |
| 76 | +``` |
| 77 | +##最后 |
| 78 | +如果你对[TakePhoto](https://github.com/crazycodeboy/TakePhoto)有更好的建议或想改造它,欢迎大家Fork and Pull requests。 |
0 commit comments