美文网首页
OC之拍照AVCaptureStillImageOutput

OC之拍照AVCaptureStillImageOutput

作者: 苏沫离 | 来源:发表于2018-10-11 18:16 被阅读0次

    AVCaptureStillImageOutputAVCaptureOutput具体子类,用来拍摄静态照片,该类在 iOS 10.0 中已弃用,不支持较新的相机拍照功能,如RAW图像输出和动态照片。在 iOS 10.0 及更高版本中,改用AVCapturePhotoOutput类。

    1、拍照

    调用下述方法拍照:

    - (void)captureStillImageAsynchronouslyFromConnection:(AVCaptureConnection *)connection
    completionHandler:(void (^)(CMSampleBufferRef imageDataSampleBuffer, NSError *error))handler;
    

    拍照后要调用的 handler 中的参数:

    • 参数imageDataSampleBuffer :捕获的数据:包含适合于图像数据格式的元数据。例如,包含JPEG数据的缓冲区可以携带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 图像数据的样本缓冲区,如果jpegSampleBufferNULL 或不是JPEG 格式,则此方法抛出异常NSInvalidArgumentException

    本文涉及到的更多信息请阅读:
    点击阅读 捕获设备AVCaptureDevice
    点击阅读 捕获会话AVCaptureSession
    点击阅读 捕获输出超类AVCaptureOutput
    点击阅读 拍摄静态照片AVCaptureStillImageOutput
    点击阅读 拍照AVCapturePhotoOutput
    点击阅读 拍照协议方法AVCapturePhotoCaptureDelegate
    点击阅读 预拍摄的照片设置AVCapturePhotoSettings
    点击阅读 拍摄一组照片AVCapturePhotoBracketSettings
    点击阅读 拍摄出的照片解析设置 AVCaptureResolvedPhotoSettings
    点击阅读 拍照封装数据AVCapturePhoto

    相关文章

      网友评论

          本文标题:OC之拍照AVCaptureStillImageOutput

          本文链接:https://www.haomeiwen.com/subject/ztqiaftx.html