【问题标题】:Capturing a preview image with AVCaptureStillImageOutput使用 AVCaptureStillImageOutput 捕获预览图像
【发布时间】:2014-01-23 18:41:55
【问题描述】:

在 stackoverflow 成员回答“你不应该。这是侵犯隐私”之前,让我反驳一下为什么这样做是合法的。

我有一个场景,用户可以通过左右滑动来更改相机设备。为了让这个动画看起来不像绝对的废话,我需要在制作这个动画之前抓住一个定格。

我看到的唯一理智的答案是捕获AVCaptureVideoDataOutput 的缓冲区,这很好,但现在我不能让用户使用 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 拍摄视频/照片,这是一场试图从中获取 CGImage 的噩梦CGBitmapContextCreateHow to convert a kCVPixelFormatType_420YpCbCr8BiPlanarFullRange buffer to UIImage in iOS

在拍摄静态照片时,使用AVCaptureVideoDataOutput 代替AVCaptureStillImageOutput 是否有任何严重的质量注意事项?由于用户将同时拍摄视频和静态照片(不仅仅是冻结帧预览剧照)另外,有人可以“像我五岁一样向我解释一下”kCVPixelFormatType_420YpCbCr8BiPlanarFullRange/kCVPixelFormatType_32BGRA 之间的区别,除了一个没有不能在旧硬件上工作?

【问题讨论】:

    标签: ios avfoundation avcapturesession


    【解决方案1】:

    我认为没有办法使用 AVFoundation 直接捕获预览图像。但是,您可以通过执行以下操作来捕获预览层:

    UIGraphicsBeginImageContext(previewView.frame.size);
    [previewLayer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    

    previewView.layer 在哪里 previewLayer 是添加到 previewView 的 AVCaptureVideoPreviewLayer。 “图像”从该层渲染,可用于您的动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      相关资源
      最近更新 更多