你快到了。
输出为AVCapturePhotoOutput
查看
AVCapturePhotoOutput
文档以获取更多帮助。
这些是拍摄照片的步骤。
- 创建一个
AVCapturePhotoOutput
对象。使用其属性来确定支持的捕获设置并启用某些功能(例如,是否捕获实时照片)。 - 创建并配置
AVCapturePhotoSettings
对象以选择特定捕获的功能和设置(例如,启用图像稳定还是闪光灯)。 - 通过将照片设置对象
capturePhoto(with:delegate:)
与实现AVCapturePhotoCaptureDelegate
协议的委托对象一起传递给方法来捕获图像 。然后,照片捕获输出将呼叫您的代表,以在捕获过程中将重大事件通知您。
在您的
clickCapture方法上具有以下代码,并且不要忘记在类中进行确认和实现委托。
let settings = AVCapturePhotoSettings()let previewPixelType = settings.availablePreviewPhotoPixelFormatTypes.first!let previewFormat = [kCVPixelBufferPixelFormatTypeKey as String: previewPixelType, kCVPixelBufferWidthKey as String: 160, kCVPixelBufferHeightKey as String: 160, ]settings.previewPhotoFormat = previewFormatself.cameraOutput.capturePhoto(with: settings, delegate: self)
输出为
AVCaptureStillImageOutput
如果您打算通过视频连接拍摄照片。您可以按照以下步骤 *** 作。
步骤1:建立连线
if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) { // ... // Code for photo capture goes here...}
步骤2:拍摄相片
- 在
captureStillImageAsynchronouslyFromConnection
上调用该函数stillImageOutput
。 - 的
sampleBuffer
表示被捕捉的数据。
stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: { (sampleBuffer, error) -> Void in // ... // Process the image data (sampleBuffer) here to get an image file we can put in our captureImageView})
步骤3:处理图像数据
- 我们将需要采取一些步骤来处理在sampleBuffer中找到的图像数据,以便最终获得一个UIImage,我们可以将其插入到captureImageView中并在应用程序的其他位置轻松使用。
if sampleBuffer != nil { let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) let dataProvider = CGDataProviderCreateWithCFData(imageData) let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault) let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right) // ... // Add the image to captureImageView here...}
步骤4:储存图片
根据您的需要将图像保存到照片库或在图像视图中显示
有关更多详细信息,请查看 “ 捕捉照片” 下的“
创建自定义相机视图指南 ”。 __
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)