首页 > 解决方案 > 尝试使用 AVCapturePhotoOutput 捕获照片时图像变暗

问题描述

我正在尝试使用 AVCapturePhotoOutput 拍摄照片,但图像变暗了。这是我获取图像的方式

@IBAction func capturephoto(_ sender: Any) {
    print("entered into capture photo")

    let settings = AVCapturePhotoSettings()
    let previewPixelType = settings.availablePreviewPhotoPixelFormatTypes.first!
    let previewFormat = [
        kCVPixelBufferPixelFormatTypeKey as String: previewPixelType,
        kCVPixelBufferWidthKey as String: self.preivew.frame.width,
        kCVPixelBufferHeightKey as String: self.preivew.frame.height
    ] as [String : Any]
    settings.previewPhotoFormat = previewFormat
    captureSession.addOutput(stillImageOutput)
    print("stillimageoutput is",stillImageOutput)
    self.stillImageOutput.capturePhoto(with: settings, delegate: self)
}


func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {

    if let error = error {
        print(error.localizedDescription)
    }
    let imageData = photo.fileDataRepresentation()
    if let data = imageData, let img = UIImage(data: data) {
        print(img)
     }
 }

标签: swift

解决方案


有同样的问题,在另一个堆栈溢出线程上发现了这个问题,添加它对我有用:)

session.sessionPreset = AVCaptureSession.Preset.photo

这是讨论的链接

AVCaptureSession 没有提供良好的照片质量和良好的分辨率

希望这可以帮助。


推荐阅读