Bra*_*nch 3 iphone xcode camera ipad ios
我在使用AVCapture时遇到了麻烦.
背景故事:我为我的iPad应用程序制作了一个新的故事板我复制了iPhone故事板并通过在需要的地方添加.iPad来更改新故事板的源代码.目前,我的应用只使用纵向模式.
然而AVCapture,(我现在用的显示相机的活饲料)仅填充屏幕的一部分,在外面黑条.我也注意到它在3.5英寸屏幕iPhone上做到了这一点.
我会按要求添加代码.
请使所有说明超级易于遵循,这是我的第一个应用程序,我是一个新手.
谢谢!!科
编辑:我从Apple的文档中尝试了这段代码,但它没有用:
AVCaptureSession *captureSession;
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];
UIView *aView;
previewLayer.frame = aView.bounds;
[aView.layer addSublayer:previewLayer];
相机的宽高比与iPad屏幕的宽高比不同.您可以更改您的videoGravity
属性AVCaptureVideoPreviewLayer
以填充整个图层(这将裁剪输入,但您不会看到条形图):
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
Run Code Online (Sandbox Code Playgroud)
当您实际捕获图像时,您仍将获得整个相机输入,而不仅仅是图层预览.您需要根据UI进行数学运算(几何)以旋转并裁剪它以获取用户实际看到的图像.
也许我的问题很相似.对于解决方案,请执行以下操作:
我今天发布了我的解决方案,通过使用DBCamera报告问题,这里是完整的内容:
这可能不是什么大事,但对于那些关心为什么从自定义全屏相机预览中拍摄的照片看起来不完全相同的人来说,这是有用的.
我注意到使用自定义的摄像机视图(从DBCameraView继承,并从给定的示例调用openCustomCamera)将生成全屏预览.从iPhone 5s和6s上的全屏预览拍摄的照片将从两侧获得一些额外的空间,这意味着在触发相机之前,最终照片在预览中看起来不完全相同.
这是因为:
1.代码中预设的会话是AVCaptureSessionPresetPhoto
2. previewLayer的videoGravity设置为AVLayerVideoGravityResizeAspectFill
3.预览的帧是设备屏幕的界限
用于previewLayer的videoGravity是系统默认的AVLayerVideoGravityResizeAspect.当您将会话预设为AVCaptureSessionPresetPhoto并将预览的大小设置为屏幕大小时,系统无法满足这两个条件,因为我认为AVCaptureSessionPresetPhoto将调整预览的大小(即调整大小方面)以对应高分辨率捕获的照片( 4:3?).它的宽高比似乎与屏幕不同(4s不太明显),因此即使您将预览的帧设置为等于屏幕边界,您也可以看到黑色区域同时出现在顶部和底部.但是DBCamera在代码中将AVLayerVideoGravityResizeAspectFill设置为videoGravity.这将导致预览尝试填满整个屏幕并保持其正确的宽高比.自定义摄像机视图似乎填满整个设备屏幕,但实际预览大于屏幕尺寸,从左侧和右侧延伸超出屏幕的额外空间.
要解决问题以从全屏预览中获取完全相同的照片,请设置AVCaptureSessionPresetHigh而不是AVCaptureSessionPresetPhoto.它会工作.缺点是照片的质量可能不会保持不变,那就是权衡.
如果我错了,请纠正我,希望它有所帮助.
https://github.com/danielebogo/DBCamera/issues/194
归档时间: |
|
查看次数: |
4035 次 |
最近记录: |