AVCaptureStillImageOutput 是AVCaptureOutput具体子类,用来拍摄静态照片,该类在 iOS 10.0
中已弃用,不支持较新的相机拍照功能,如RAW图像输出和动态照片。在 iOS 10.0
及更高版本中,改用AVCapturePhotoOutput
类。
1、拍照
调用下述方法拍照:
- (void)captureStillImageAsynchronouslyFromConnection:(AVCaptureConnection *)connection
completionHandler:(void (^)(CMSampleBufferRef imageDataSampleBuffer, NSError *error))handler;
拍照后要调用的 handler
中的参数:
- 参数
imageDataSampleBuffer
:捕获的数据:包含适合于图像数据格式的元数据。例如,包含JPE
G数据的缓冲区可以携带kCGImagePropertyExifDictionary
作为附件。 - 参数
error
: 如果请求失败,返回NSError对象。
可以使用下述属性查看是否正在拍照:
@property(readonly, getter=isCapturingStillImage) BOOL capturingStillImage;
2、配置图像设置
属性 | 类型 | 描述 |
---|---|---|
availableImageDataCVPixelFormatTypes |
NSArray<NSNumber *> |
支持的图像像素格式,可以将其用作outputSettings 属性中kCVPixelBufferPixelFormatTypeKey 的值。 |
availableImageDataCodecTypes |
NSArray<AVVideoCodecType> |
支持的图像编解码器格式,可以将其用作outputSettings 属性中AVVideoCodecKey 的值。 |
outputSettings
|NSDictionary<NSString *,id>
|输出设置。
3、图像格式转换
将静态图像数据CMSampleBufferRef
转为NSData
+ (NSData *)jpegStillImageNSDataRepresentation:(CMSampleBufferRef)jpegSampleBuffer;
- 参数
CMSampleBufferRef
: 携带JPEG
图像数据的样本缓冲区,如果jpegSampleBuffer
为NULL
或不是JPEG
格式,则此方法抛出异常NSInvalidArgumentException
。
本文涉及到的更多信息请阅读:
点击阅读 捕获设备AVCaptureDevice
点击阅读 捕获会话AVCaptureSession
点击阅读 捕获输出超类AVCaptureOutput
点击阅读 拍摄静态照片AVCaptureStillImageOutput
点击阅读 拍照AVCapturePhotoOutput
点击阅读 拍照协议方法AVCapturePhotoCaptureDelegate
点击阅读 预拍摄的照片设置AVCapturePhotoSettings
点击阅读 拍摄一组照片AVCapturePhotoBracketSettings
点击阅读 拍摄出的照片解析设置 AVCaptureResolvedPhotoSettings
点击阅读 拍照封装数据AVCapturePhoto
网友评论