- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在制作一个自定义相机应用程序,我可以在其中通过 takePhoto 按钮拍摄我的照片,但是 takePhoto 中出现错误,提示 AVCapturePhotoOutput 没有成员“captureStillImageAsynchronously”。
View Controller
import UIKit
import AVFoundation
import CoreImage
@available(iOS 10.0, *)
class ViewController: UIViewController {
var captureSession = AVCaptureSession()
var sessionOutput = AVCapturePhotoOutput()
var previewLayer = AVCaptureVideoPreviewLayer()
@IBOutlet weak var imageViewReal: UIImageView!
@IBOutlet weak var cameraView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let deviceSession = AVCaptureDeviceDiscoverySession.init(deviceTypes: [.builtInDuoCamera, .builtInTelephotoCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified)
for device in (deviceSession?.devices)! {
if (device as AnyObject).position == AVCaptureDevicePosition.front {
do {
let input = try AVCaptureDeviceInput(device: device )
if captureSession.canAddInput(input) {
captureSession.addInput(input)
if captureSession.canAddOutput(sessionOutput){
captureSession.addOutput(sessionOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer.connection.videoOrientation = .portrait
cameraView.layer.addSublayer(previewLayer)
cameraView.addSubview(takePhoto)
previewLayer.position = CGPoint (x: self.imageViewReal.frame.width / 2, y: self.imageViewReal.frame.height / 2 )
previewLayer.bounds = imageViewReal.frame
captureSession.startRunning()
}
}
}
catch {
print("Error")
}
}
}
}
@IBAction func takePhoto(_ sender: Any) {
if let videoConnection = sessionOutput.connection(withMediaType: AVMediaTypeVideo) {
sessionOutput.captureStillImageAsynchronously(from: videoConnection, completionHandler: {
buffer, Error in
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
UIImageWriteToSavedPhotosAlbum(UIImage(data : imageData!)!, nil, nil, nil)
})
}
}
}
最佳答案
如果您的应用兼容 iOS9,请使用 AVCaptureStillImageOutput
的方法:
func captureStillImageAsynchronously(from connection: AVCaptureConnection!,
completionHandler handler: ((CMSampleBuffer?, Error?) -> Void)!)
如果你的app从iOS10开始,你应该使用AVCapturePhotoOutput
的方法:
open func capturePhoto(with settings: AVCapturePhotoSettings, delegate: AVCapturePhotoCaptureDelegate)
所以,var sessionOutput = AVCapturePhotoOutput()
应该是 var sessionOutput = AVCaptureStillImageOutput()
。
试试吧。
关于ios - AVCapturePhotoOutput 没有成员 'captureStillImageAsynchronously',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000307/
我正在编写一个应用程序,该应用程序在用户按下按钮后每 0.1 秒拍摄一张图像。然而,我无法在图像之间获得一致的 0.1 秒延迟。 这是因为 captureStillImageAsynchronousl
我目前遇到 AVCaptureStillImageOutput 问题,当我尝试拍照时,图像当前为零。我当前尝试修复错误发现 captureStillImageAsynchronously 方法根本没有
我正在制作一个自定义相机应用程序,我可以在其中通过 takePhoto 按钮拍摄我的照片,但是 takePhoto 中出现错误,提示 AVCapturePhotoOutput 没有成员“capture
请帮我重构这段代码,它不起作用,我在互联网上搜索但没有找到任何解决方案。我不能自己重构它。 这一行: imageOutput.captureStillImageAsynchronously(from:
如何在 Swift 3 中将 captureStillImageAsynchronously(sampleBuffer) 转换为 base64 编码 我正在尝试将图像数据连续馈送到 HTML WebV
我是一名优秀的程序员,十分优秀!