美文网首页
iOS CMSampleBuffer转为UIImage的方法

iOS CMSampleBuffer转为UIImage的方法

作者: 刘乔泓 | 来源:发表于2023-01-28 14:29 被阅读0次

    iOS camera输出CMSampleBuffer,如何转为UIImage?

    第一步:
    从sampleBuffer获取CVImageBuffer
    let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)

    第二步:
    CVImageBuffer转为UIImage
    let ciImage = CIImage(cvPixelBuffer: imageBuffer)
    let context = CIContext(options: nil)
    guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return nil }
    let image = UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)

    具体代码如下

    /// Converts an image buffer to a `UIImage`.
        /// - Parameters:
        ///   - imageBuffer: The image buffer which should be converted.
        ///   - origentation: The orientation already applied to the image.
        /// - Returns: A new `UIImage` instance.
        public static func createUIImage(from imageBuffer: CVImageBuffer, orientation: UIImage.Orientation) -> UIImage? {
            let ciImage = CIImage(cvPixelBuffer: imageBuffer)
            let context = CIContext(options: nil)
            guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return nil }
            return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)
        }
    
        //CMSampleBuffer转为UIImage方法
        public static func createUIImage(from sampleBuffer: CMSampleBuffer, orientation: UIImage.Orientation) -> UIImage? {
              // 获取CMSampleBuffer的核心视频图像缓冲的媒体数据
              if let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) {
                  return Self.createUIImage(from: imageBuffer, orientation: orientation)
              }
              return nil
          }
    

    相关文章

      网友评论

          本文标题:iOS CMSampleBuffer转为UIImage的方法

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