AVFoundation相机变焦

B.S*_*.S. 7 objective-c avfoundation ios

我使用AVFoundation框架来显示来自相机的视频.

我如何使用它的代码通常是:

session = [[AVCaptureSession alloc] init] ;
...   
captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
...
[cameraView.layer addSublayer:captureVideoPreviewLayer];
...
Run Code Online (Sandbox Code Playgroud)

所以我想为相机添加缩放功能.

我找到了2个如何实现缩放的解决方案.

第一:是使用CGAffineTransform:

cameraView.transform = CGAffineTransformMakeScale(x,y);

第二种:将cameraView放在滚动视图中,设置最大和最小滚动并将此视图设置为缩放视图.

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return cameraView;
}
Run Code Online (Sandbox Code Playgroud)

什么是缩放更好的性能和质量的最佳方法?还有其他解决方案可以进行缩放吗?也许我错过了AVFoundation缩放的一些方法.

谢谢.

Nat*_*ert 6

那么实际上有一个GCFloat叫做setVideoScaleandCropFactor.

你可以在这里找到文档.

我不确定这是否仅适用于静止图像输出,但我一直在研究它,如果你将它设置为手势或滑块并且让它控制浮动,它会很好.

你可以在这里找到它的演示.

好东西.我试图循环它,所以我可以创建一个带缩放的条形码扫描仪.哈哈,我正在做的事情很粗糙.

  • videoScaleAndCropFactor不适用于视频.videoMaxScaleAndCropFactor设置为1.0,如果更改videoScaleAndCropFactor,则抛出异常. (2认同)