将CMSampleBuffer转换为UIImage的方法
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
网友评论