2016-10-03 82 views
1

所以,我磁体如何使缩放效果与CATransform3DMakeScale(2.4,2.4,2.4),但现在我已经试图拯救Zoome预览消息(代码为我做缩放)问题:如何使用AVFoundation将预览(缩放)图像保存为照片?

// init camera device 
    let captureDevice : AVCaptureDevice? = initCaptureDevice() 
    print("camera was initialized") 
    // Prepare output 
    initOutput() 
    if (captureDevice != nil) { 
     let deviceInput : AVCaptureInput? = initInputDevice(captureDevice: captureDevice!) 
     if (deviceInput != nil) { 
      initSession(deviceInput: deviceInput!) 
      // Preview Size 
      let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.session) 
      previewLayer.frame = self.view.bounds 
      previewLayer.transform = CATransform3DMakeScale(2.4, 2.4, 2.4) 
      imagePreviewScale = previewLayer.contentsScale 
      self.view.layer.addSublayer(previewLayer) 
      self.session?.startRunning() 

现在我试图挽救像这样的预览缩放图像:

let videoConnection : AVCaptureConnection? = self.imageOutput?.connection(withMediaType: AVMediaTypeVideo) 
    if (videoConnection != nil) { 

     videoConnection?.videoScaleAndCropFactor = imagePreviewScale 

     self.imageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: { (imageDataSampleBuffer, error) -> Void in 
      if (imageDataSampleBuffer != nil) { 
            // Capture JPEG 

       let imageData : NSData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer) as NSData 
       // JPEG 
       let image = UIImage(data: imageData as Data) 

,并添加

imagePreviewScale = previewLayer.contentsScale 

但还是没有任何反应行了,请人CA告诉我如何保存精确缩放的图片?

回答

1

问题是previewLayer.contentsScale是1,所以你设置videoScaleAndCropFactor为1

你需要将其设置为

videoConnection?.videoScaleAndCropFactor = 2.4 
+0

真棒,我已经想通了昨天,但忘了更新这个问题!但是,谢谢! –