gpt4 book ai didi

swift - 修改 AVCaptureStillImageOutput 为 AVCapturePhotoOutput

转载 作者:行者123 更新时间:2023-11-28 12:33:49 35 4
gpt4 key购买 nike

我目前正在编写一段代码,如下所示:

if error == nil && (captureSession?.canAddInput(input))!
{
captureSession?.addInput(input)

stillImageOutput = AVCaptureStillImageOutput()
//let settings = AVCapturePhotoSettings()
//settings.availablePreviewPhotoPixelFormatTypes =
stillImageOutput?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]

if (captureSession?.canAddOutput(stillImageOutput))!
{
captureSession?.addOutput(stillImageOutput)

previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer!)
captureSession?.startRunning()
}
}

我知道我应该使用 AVCapturePhotoOutput() 而不是 AVCaptureStillImageOutput() 但是我很困惑如果我让那个改变。

具体来说,如何使用注释的 let settings = AVCapturePhotoSettings() 应用相同的设置?

作为引用,我正在使用 this教程作为指导。

谢谢

最佳答案

Apple 文档对How to use AVCapturePhotoOutput 解释得非常清楚

这些是拍摄照片的步骤。

  • 创建一个 AVCapturePhotoOutput 对象。使用其属性来确定支持的捕获设置并启用某些功能(例如,是否捕获实时照片)。
  • 创建和配置 AVCapturePhotoSettings 对象以为特定拍摄选择功能和设置(例如,是否启用图像稳定或闪光灯)。
  • 通过将您的照片设置对象与实现 AVCapturePhotoCaptureDelegate 协议(protocol)的委托(delegate)对象一起传递给 capturePhoto(with:delegate:) 方法来捕获图像。照片捕获输出随后会调用您的代理,以通知您捕获过程中的重要事件。

在您的 clickCapture 方法中使用下面的代码,并且不要忘记在您的类中确认和实现委托(delegate)。

let settings = AVCapturePhotoSettings()
let previewPixelType = settings.availablePreviewPhotoPixelFormatTypes.first!
let previewFormat = [kCVPixelBufferPixelFormatTypeKey as String: previewPixelType,
kCVPixelBufferWidthKey as String: 160,
kCVPixelBufferHeightKey as String: 160,
]
settings.previewPhotoFormat = previewFormat
self.cameraOutput.capturePhoto(with: settings, delegate: self)

如果您想了解从 avfoundation 捕获照片的不同方式,请查看我之前的 SO answer

关于swift - 修改 AVCaptureStillImageOutput 为 AVCapturePhotoOutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41419453/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com