0

I am making Live Sticker app and capturing image using AVFoundation. The issue i am getting is that when i save image it save only image not stickers that are placed on image I have 2 issues
1=> Save image with live stickers 2=> Change image orientation to portrait mode

Camera preview layer code I am getting just image not live sticker

I want to save image with sticker like shown in image but getting only image

     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)
}

I am saving image using this code

    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)
}

1 Answers1

0

You have to draw image along with overlay stickers.

Suppose You have preview view in which you added the sticker.
image is image you got from imageFromSampleBuffer or 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
Prashant Tukadiya
  • 15,838
  • 4
  • 62
  • 98