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

将CMSampleBuffer转换为UIImage的方法

作者: UILabelkell | 来源:发表于2025-08-14 09:35 被阅读0次
    func convertSampleBufferToUIImage(_ sampleBuffer: CMSampleBuffer) -> UIImage? {
        guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
            return nil
        }

        let ciImage = CIImage(cvPixelBuffer: pixelBuffer)

        // 根据摄像头方向创建变换
        var transform: CGAffineTransform
        if currentCameraPosition == .front {
            // 前置摄像头:旋转+镜像
            transform = CGAffineTransform(rotationAngle: -.pi/2)
                .scaledBy(x: -1, y: 1)
        } else {
            // 后置摄像头:旋转
            transform = CGAffineTransform(rotationAngle: -.pi/2)
        }

        // 应用变换
        let transformedImage = ciImage.transformed(by: transform)

        // 使用CIContext渲染
        let context = CIContext(options: nil)
        guard let cgImage = context.createCGImage(transformedImage, from: transformedImage.extent) else {
            return nil
        }

        return UIImage(cgImage: cgImage)
    }

相关文章

网友评论

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

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