登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

自定义相机/截图

[复制链接]
来自: 翱翔66179 分类: iOS精品源码 上传时间: 2016-11-2 13:57:44

项目介绍:

工作之余,研究了一下相机的自定义,在这里整理成篇仅供参考学习,希望可以给大家带来些许帮助,也期待大家的批评指正。

托管地址:https://github.com/IMCCP/CCPCustomCamera

GIF

相机界面的布局示意图
UI布局展示

CCPCustomCamera

工作之余,研究了一下相机的自定义,在这里整理成篇仅供参考学习,希望可以给大家带来些许帮助,也期待大家的批评指正。

GIF 示例:

ccpcamera.gif

iOS开发中调用相机来获取照片时,如果对相机样式没有过多的要求,通常我们会调用UIImagePickerController这个系统封装好的控件。但是有时

UIImagePickerController无法满足项目的需求,例如我们需要自定义的相机样式,此时则需要自己构造一个相机控件,因此需要使用AVFoundation框架进行相机

的自定义。

首先导入 AVFoundation.framework

#import <AVFoundation/AVFoundation.h>

一、创建相机相关的属性

/**
 *  用来获取相机设备的一些属性
 */
@property (nonatomic,strong)AVCaptureDevice *device;

/**
 *  用来执行输入设备和输出设备之间的数据交换
 */
@property(nonatomic,strong)AVCaptureSession * session;

/**
 *  输入设备,调用所有的输入硬件,例如摄像头、麦克风
 */
@property (nonatomic,strong)AVCaptureDeviceInput *deviceInput;

/**
 *  照片流输出,用于输出图像
 */
@property (nonatomic,strong)AVCaptureStillImageOutput *imageOutput;

/**
 *  镜头扑捉到的预览图层
 */
@property (nonatomic,strong)AVCaptureVideoPreviewLayer *previewLayer;

/**
 *  session通过AVCaptureConnection连接AVCaptureStillImageOutput进行图片输出
 */
@property (nonatomic,strong) AVCaptureConnection *connection;

#以下属性只是在本DEMO中有用到,大家可以按照自己项目的需求进行添加。
/**
 *  记录屏幕的旋转方向
 */
@property (nonatomic,assign) UIDeviceOrientation deviceOrientation;

/**
 *  给自定义相机添加(UIPinchGestureRecognizer)手势 ->记录开始的缩放比例
 */
@property(nonatomic,assign)CGFloat beginGestureScale;

/**
 *  记录最后的缩放比例
 */
@property(nonatomic,assign)CGFloat effectiveScale;

/**
 *  自定义闪光灯功能 ->闪光灯按钮
 */
@property(nonatomic,weak)UIButton *lightButton;

/**
 *  闪光灯状态
 */
@property (nonatomic,assign) NSInteger lightCameraState;

/**
 *  遮照View,主要用来自定义相机界面的显示效果
 */
@property (nonatomic,weak) CCPCameraView *caramView;

二、相机界面的布局

图片示意图

ccpCa.png

三、主要功能介绍

1.拍照按钮

这里需要注意的是拍照完成后的照片显示的方向问题。

屏幕的方向大致可以分为以下6中:

home键盘朝下/home键朝右/home键朝上/home键朝左,还有两种就是屏幕朝上和屏幕朝下。因此需要根据不同屏幕方向进行照片的旋转,否则照片的显示将会出现问题,解决方法见下文介绍。

2.自定义截图功能

通过使用第三方截图框架(TOCropViewController),实现自定义截图。

框架地址:TOCropViewController

 TOCropViewController *cropController = [[TOCropViewController alloc] initWithImage:image];
            cropController.delegate = self;
            //截图的展示样式
            cropController.aspectRatioPreset = TOCropViewControllerAspectRatioPresetSquare;
            //隐藏比例选择按钮
            cropController.aspectRatioPickerButtonHidden = YES;
            cropController.aspectRatioLockEnabled = YES;
            //重置后缩小到当前设置的长宽比
            cropController.resetAspectRatioEnabled = NO;
            
            //是否可以手动拖动
            cropController.cropView.cropBoxResizeEnabled = NO;
            
            [self presentViewController:cropController animated:NO completion:nil];

# pragma mark -TOCropViewControllerDelegate 图片裁剪
- (void)cropViewController:(TOCropViewController *)cropViewController didCropToImage:(UIImage *)image withRect:(CGRect)cropRect angle:(NSInteger)angle{

    UIImageWriteToSavedPhotosAlbum(image, self, nil, NULL);
    [self dismissViewControllerAnimated:NO completion:nil];
    [self dismissViewControllerAnimated:YES completion:nil];

}

3.聚焦功能

4.镜头切换与镜头缩放功能

5.闪光灯功能

四、下一步将要完善的功能

1.图片浏览器功能;

2.图片的美化以及滤镜功能;

感谢您的阅读,期待您的 Star,如果在使用中您有任何问题,可以在 github issue 或者在下方进行评论,我会尽自己能力给您答复 。

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(87)
code4app热心网友 2016-11-2 16:41:13
正需要啊,感谢楼主无私分享!
回复
code4app热心网友 2016-11-2 16:49:43
我只是路过打酱油的。
回复
code4app热心网友 2016-11-2 22:09:38
楼主用心了,内容非常精彩。
回复
王颖博 2016-11-3 09:48:42
感谢分享,Code4App有你更精彩
回复
初冬 2016-11-3 10:34:03
精华内容,楼主V5!
回复
code4app热心网友 2016-11-3 19:05:57
很给力,Code4App有你更精彩!
回复
code4app热心网友 2016-11-3 21:05:20
楼主威武啊,Code4App有你更给力!
回复
code4app热心网友 2016-11-3 21:05:51
淡定,淡定,淡定……
回复
code4app热心网友 2016-11-4 09:32:28
很给力,Code4App有你更精彩!
回复
提取码:  下载次数:128 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1731 0 128
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表