我正在尝试在iOS上创建自定义相机体验,以下代码片段就是我所知道的。基本上我想要通常的相机视图(即使用以下按钮:捕捉,闪光,网格,前/后,取消)。但是普通相机与我的唯一区别在于我想要预览表面的正方形;不是一个矩形。然后,你所看到的就是你得到的(所见即所得),这样就不需要裁剪了;因为用户首先会拍摄正方形照片。
我一直在看图书馆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上单个视图项目中唯一的自定义代码
答案 0 :(得分:10)
您可以选择两种方式来做自己想做的事情,要么坚持并自定义UIImagePickerController
,要么使用AVFoundation
创建自己的。{/ p>
UIImagePickerController
确实提供了相当多的自定义选项,这个类似的帖子有一些很好的信息:link。
如果您仍想制作自己的产品,我建议您前往Apple文档并查看名为AVCam
:link的演示项目。但是,它比你可能需要的更深入,所以我也可以推荐这个视频教程:link。
如果选择最后一个选项,我想提一下,为了让“实际相机”适合您previewLayer
的框架,您可以在videoGravity
上设置AVCaptureVideoPreviewLayer
到AVLayerVideoGravityResizeAspectFill
。
答案 1 :(得分:0)
使用自定义相机可能会有点痛苦,但考虑到您真正能够自定义应用体验,它会带来好处。
最简单的方法是使用TGCameraViewController。
使用此TGCameraViewController
,您可以编辑整个摄像机视图。此外,它提供以下功能: -
您也可以参考AVCamManual: Extending AVCam to Use Manual Capture文档创建自己的自定义相机。