【iOS】拍照/相册单选、相册多选、图片浏览、图片裁剪
2017-01-04 10:44
459 查看
有一段时间没有写iOS系列的博客了。最近由于项目的需要,就有封装了一个拍照/相册单选、相册多选、图片浏览、图片裁剪的工具类。在封装这这类是站在巨人的肩膀上做的。
1.ZLPhotoBrowser:https://github.com/longitachi/ZLPhotoBrowser
2.VPImageCropper:https://github.com/windshg/VPImageCropper
上面一个是相册和相机的,下面一个是图片裁剪。
而我要做的就是把这两个封装在一起满足我们项目的需求。
2.确认购物后发表评论,这是 一般是可以上传图片的,而且是可以多张,那么这个封装也可以满足需求。
在ZLOnePhoto类里面只有一个方法就可以搞定上面的两个场景。
不同的需求通过设置不同的枚举值就可以了,使用起来很方便,选择结果直接在block里面回调。
例如:
拍照
图片体积太大,大家去github查看。
https://github.com/zhuming3834/HGDQPhoto/blob/master/动画2.gif
相册多选
1.ZLPhotoBrowser:https://github.com/longitachi/ZLPhotoBrowser
2.VPImageCropper:https://github.com/windshg/VPImageCropper
上面一个是相册和相机的,下面一个是图片裁剪。
而我要做的就是把这两个封装在一起满足我们项目的需求。
常见场景
1.个人中心,修改个人头像,需要拍照或是从相册选图,这个一般是一张且带有裁剪功能。那么我的这个封装可以满足这个需求。2.确认购物后发表评论,这是 一般是可以上传图片的,而且是可以多张,那么这个封装也可以满足需求。
两个库
关于上面提到的两个库,大家可以去库的github上面查看或是自行百度。我的封装
我封装就是在ZLPhotoBrowser库的基础上增加了一个ZLOnePhoto类,然后把VPImageCropper给整合进去。在ZLOnePhoto类里面只有一个方法就可以搞定上面的两个场景。
typedef NS_ENUM(NSInteger, PickerType) { PickerType_Camera = 0, // 拍照 PickerType_Photo, // 照片 }; typedef NS_ENUM(NSInteger, PhotoCutType) { PhotoCutType_YES = 0, // 裁剪 PhotoCutType_NO, // 不裁剪 }; /** 相片选择回调 @param image 相片信息 @param isCancel 是否取消 1:取消 0 没取消 */ typedef void(^CallBackBlock)(UIImage *image, BOOL isCancel); @interface ZLOnePhoto : NSObject /** 单例 @return ZLOnePhoto */ + (instancetype)shareInstance; /** 拍照或是选择相册 @param pickerType PickerType @param photoCutType 是否裁剪 @param vc 调用此方法的控制器 @param callBackBlock 回调 */ - (void)presentPicker:(PickerType)pickerType photoCut:(PhotoCutType)photoCutType target:(UIViewController *)vc callBackBlock:(CallBackBlock)callBackBlock;
不同的需求通过设置不同的枚举值就可以了,使用起来很方便,选择结果直接在block里面回调。
例如:
// 相册单选 不裁剪 ZLOnePhoto *one = [ZLOnePhoto shareInstance]; [one presentPicker:PickerType_Photo photoCut:PhotoCutType_NO target:self callBackBlock:^(UIImage *image, BOOL isCancel) { self.imageView.image = image; }];
两个库怎么连接起来
两个库的连接是在UIImagePickerControllerDelegate的代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info里面做的。详细的处理大家可以去我的github查看代码。
iOS10权限
在info.plist中加入:<key>NSPhotoLibraryUsageDescription</key> <string>需要您的同意,才能访问相册</string> <key>NSCameraUsageDescription</key> <string>需要您的同意,才能访问相机</string>
效果图
相册单选拍照
图片体积太大,大家去github查看。
https://github.com/zhuming3834/HGDQPhoto/blob/master/动画2.gif
相册多选
代码下载
请点击我!相关文章推荐
- iOS--拍照、从相册选图并对图片进行裁剪
- IOS学习笔记39——拍照、从相册选图并对图片进行裁剪
- Android 图片单选/多选、拍照、裁剪、压缩。视频选择和录制
- IOS学习笔记39——拍照、从相册选图并对图片进行裁剪
- IOS多选单选相册图片
- iOS拍照、从相册选图并对图片进行裁剪
- galleryfinal 实现Android图片单选/多选、拍照、裁剪、压缩。视频选择和录制。
- 好用的图片选择器,支持单选多选,相册里面又拍照
- IOS学习笔记39——拍照、从相册选图并对图片进行裁剪
- iOS 相机拍照、相册获取照片(仿微信) 一一 拍照、图片裁剪
- iOS 相机拍照、相册获取照片(仿微信) 一一 从相册获取图片、图片裁剪
- Android 图片选择对话框,通过本地相册或照相机获得图片,可单选或多选,单选可设置是否裁剪
- 拍照选择-相册图片裁剪后保存在指定的地址
- iOS:图片选择器(单选、多选、支持arc、支持iOS7+)
- Android大图片裁剪之手机拍照和从相册中选择注意点
- Android调用相机实现拍照并裁剪图片,调用手机中的相册图片并裁剪图片
- 拍照、从相册选图并对图片进行裁剪
- ImageView---拍照或从相册取图片并裁剪
- IOS——选取相册中图片使用或使用照相机拍照后使用图片
- iOS 选取相册图片并裁剪,解决获取图片拉伸问题