首页 > 解决方案 > 实例成员“fileDataRepresentation”不能用于“AVCapturePhoto”类型;你的意思是使用这种类型的值吗?

问题描述

Swift 给出了无法为 AVCapturePhoto 创建文件数据表示的错误。打印“照片”,返回照片的元数据。如何将图像转换为文件字节并最终转换为 base64?到目前为止,我已经尝试了很多方法,但都依赖于获取文件字节。感谢您提前回复!

   @IBAction func takePhotoButtonPressed(_ sender: Any) {
          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
          settings.isHighResolutionPhotoEnabled = false
          sessionOutput.capturePhoto(with: settings, delegate: self)
        
    }

    func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Swift.Error?) {
        let imageData = AVCapturePhoto.fileDataRepresentation()

标签: swiftavfoundationcaptureavcaptureavcapturephotooutput

解决方案


AVCapturePhoto.fileDataRepresentation是一种instance方法,而不是一种class方法。

您必须在这样的实例上调用它AVCapturePhoto-

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Swift.Error?) {
    let imageData = photo.fileDataRepresentation()
}

推荐阅读