繁体   English   中英

使用IOS中的AVFoundation捕获摄像机图像以及实时滤镜

[英]Capture camera image along with live filters Using AVFoundation in IOS

我正在制作Live Sticker应用并使用AVFoundation捕获图像。 我遇到的问题是,当我保存图像时,它仅保存图像,而不保存放置在图像上的贴纸,我有2个问题
1 =>使用实时贴纸保存图像2 =>将图像方向更改为纵向模式

相机预览图层代码我得到的只是图像而不是实时贴纸

我想用贴纸保存图像,如图所示,但仅获取图像

     func setupCameraPreview() {
    self.previewLayer = AVCaptureVideoPreviewLayer(session: self.session)
    self.previewLayer.videoGravity = AVLayerVideoGravity.resizeAspect
    let rootLayer = self.overlay.layer

    rootLayer.masksToBounds = true
    self.previewLayer.frame = rootLayer.bounds
    rootLayer.addSublayer(self.previewLayer)
}

我正在使用此代码保存图像

    private func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> UIImage? {
    guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil }
    let ciImage = CIImage(cvPixelBuffer: imageBuffer)
    let context = CIContext()
    guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return nil }
    return UIImage(cgImage: cgImage)
}

您必须与覆盖贴纸一起绘制图像。

假设您具有添加标签的preview视图。
image是从imageFromSampleBufferstillImage获得的图像

var imageView = UIImageView(image: image)
imageView.frame = preview.bounds
//   imageView.contentMode = UIViewContentModeScaleAspectFit;
preview.addSubview(imageView)
preview.sendSubview(toBack: imageView)
var layer: CALayer? = preview.layer
UIGraphicsBeginImageContextWithOptions((layer?.frame.size)!, false, 0.0)
if let aContext = UIGraphicsGetCurrentContext() {
    layer?.render(in: aContext)
}
var img: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

 self.yourImageView.image = img

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM