在 iOS 上创建具有方形视图的自定义相机
creating custom camera with square view on iOS
我正在尝试在 iOS 上创建自定义相机体验,以下代码片段是我所获得的。基本上我想要通常的相机视图(即使用以下按钮:捕捉、闪光、网格、front/back、取消)。但是普通相机和我的唯一区别是我想要预览表面的正方形;不是矩形。然后,所见即所得 (WYSIWYG),无需裁剪;因为用户一开始会拍一张方形照片。
我也一直在查看库 https://github.com/danielebogo/DBCamera,但我不知道如何自定义它以达到我的目的。有什么帮助吗?谢谢。
到目前为止我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Output
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
output.videoSettings =
@{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = self.view;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
}
这是 Xcode 上单个视图项目中唯一的自定义代码
您有两种选择来做您想做的事情,要么坚持并自定义 UIImagePickerController
,要么使用 AVFoundation
.
创建您自己的
UIImagePickerController
确实提供了相当多的自定义选项,这个类似的线程有一些很好的信息:link。
如果您仍想自己制作,我建议您转到 Apple 文档并查看这个名为 AVCam
的演示项目:link. However, it's way more in-depth than you'll probably need so I can recommend this video tutorial as well: link.
如果选择最后一个选项,我想提一下,要使 "actual camera" 适合您的 previewLayer
框架,您可以在 [=] 上设置 videoGravity
16=] 到 AVLayerVideoGravityResizeAspectFill
.
使用自定义相机可能会有点痛苦,但它会带来好处,因为您真的能够自定义您的应用程序体验。
最简单的方法是使用 TGCameraViewController。
使用此 TGCameraViewController
,您可以编辑整个相机视图。此外,它还提供以下功能:-
- 访问相册(相机胶卷)的简便方法
- 闪光灯自动、关闭和开启
- 专注
- 前后摄像头
您也可以参考 AVCamManual: Extending AVCam to Use Manual Capture 文档来创建自己的自定义相机。
我正在尝试在 iOS 上创建自定义相机体验,以下代码片段是我所获得的。基本上我想要通常的相机视图(即使用以下按钮:捕捉、闪光、网格、front/back、取消)。但是普通相机和我的唯一区别是我想要预览表面的正方形;不是矩形。然后,所见即所得 (WYSIWYG),无需裁剪;因为用户一开始会拍一张方形照片。
我也一直在查看库 https://github.com/danielebogo/DBCamera,但我不知道如何自定义它以达到我的目的。有什么帮助吗?谢谢。
到目前为止我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Output
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
output.videoSettings =
@{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = self.view;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
}
这是 Xcode 上单个视图项目中唯一的自定义代码
您有两种选择来做您想做的事情,要么坚持并自定义 UIImagePickerController
,要么使用 AVFoundation
.
UIImagePickerController
确实提供了相当多的自定义选项,这个类似的线程有一些很好的信息:link。
如果您仍想自己制作,我建议您转到 Apple 文档并查看这个名为 AVCam
的演示项目:link. However, it's way more in-depth than you'll probably need so I can recommend this video tutorial as well: link.
如果选择最后一个选项,我想提一下,要使 "actual camera" 适合您的 previewLayer
框架,您可以在 [=] 上设置 videoGravity
16=] 到 AVLayerVideoGravityResizeAspectFill
.
使用自定义相机可能会有点痛苦,但它会带来好处,因为您真的能够自定义您的应用程序体验。
最简单的方法是使用 TGCameraViewController。
使用此 TGCameraViewController
,您可以编辑整个相机视图。此外,它还提供以下功能:-
- 访问相册(相机胶卷)的简便方法
- 闪光灯自动、关闭和开启
- 专注
- 前后摄像头
您也可以参考 AVCamManual: Extending AVCam to Use Manual Capture 文档来创建自己的自定义相机。