[英]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
是从imageFromSampleBuffer
或stillImage
获得的图像
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.