自定义相机纵横比

Posted

技术标签:

【中文标题】自定义相机纵横比【英文标题】:Custom camera aspect ratio 【发布时间】:2015-08-25 14:48:24 【问题描述】:

我正在使用AVFoundation 使用以下代码创建自定义相机视图:

    captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))
    captureSession.addOutput(stillOutput)
    if err != nil 
        println("error: \(err?.localizedDescription)")
    

    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
    previewLayer?.videoGravity=AVLayerVideoGravityResizeAspectFill

而且效果很好。然后我使用以下代码在屏幕上捕获并显示图像:

    self.stillOutput.captureStillImageAsynchronouslyFromConnection(videoConnection)
                            (imageSampleBuffer : CMSampleBuffer!, _) in

let imageDataJpeg = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageSampleBuffer)
var pickedImage: UIImage = UIImage(data: imageDataJpeg)!
var previewImageView=UIImageView()
self.previewImageView.frame = CGRect(x:0, y:0, width:UIScreen.mainScreen().bounds.width, height:UIScreen.mainScreen().bounds.height)
self.previewImageView.layer.zPosition = -1
self.view.addSubview(self.previewImageView)

但是当我想显示预览图像时,相机工作正常:

相机:

镜头预览后:

它应该看起来像相机视图。我该如何解决?

【问题讨论】:

你想达到什么效果?模糊或不同的按钮标题? 不,你可以看到第二张图片的纵横比不正确。 【参考方案1】:

如果你想制作纵横比3:4你应该设置:

captureSession.sessionPreset = .photo

【讨论】:

以上是关于自定义相机纵横比的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 3:4 纵横比 Flutter 相机预览

Android 相机在 Google Cardboard 上缩放纵横比

android相机预览错误的纵横比

相机显示不保持纵横比/似乎歪斜

如何在Android中修复相机预览(surfaceview)的正确纵横比?

设置缩小的相机预览以相对于宽度具有正确的图像纵横比