2016-03-01 24 views
0

對於這個應用程序,我需要一個橫幅樣式的圖像。下圖顯示了AVCaptureVideoPreviewLayer的視圖/大小。但我似乎無法找到一種方法來裁剪這些尺寸的預覽/保存圖像。

當我運行它知道預覽更大,那麼視圖和保存的圖像是縮放以適合視圖的完整圖像。預覽和保存特定尺寸的圖像

enter image description here

我試圖用這個環節,但我似乎無法得到它的工作.. Click!

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     captureSession = AVCaptureSession() 
     captureSession!.sessionPreset = AVCaptureSessionPresetPhoto 

     let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 

     var error: NSError? 
     var input: AVCaptureDeviceInput! 
     do { 
      input = try AVCaptureDeviceInput(device: backCamera) 
     } catch let error1 as NSError { 
      error = error1 
      input = nil 
    } 

    if error == nil && captureSession!.canAddInput(input) { 
     captureSession!.addInput(input) 

     stillImageOutput = AVCaptureStillImageOutput() 
     stillImageOutput!.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 
     if captureSession!.canAddOutput(stillImageOutput) { 
      captureSession!.addOutput(stillImageOutput) 

      previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
      previewLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill 
      previewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.Portrait 
      previewView.layer.addSublayer(previewLayer!) 

      captureSession!.startRunning() 
     } 
    } 

    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     previewLayer!.frame = previewView.bounds 
    } 

    @IBAction func didPressTakePhoto(sender: UIButton) { 

     if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) { 
      videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait 
      stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {(sampleBuffer, error) in 
       if (sampleBuffer != nil) { 
        let 

imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) 
       let dataProvider = CGDataProviderCreateWithCFData(imageData) 
       let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault) 

       let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right) 
       self.capturedImage.image = image 
      } 
     }) 
    } 
} 

回答

0

這是一個很好的文章有關resizing images

didPressTakePhoto func,你可以使用下面的代碼調整你的圖片的尺寸

UIGraphicsBeginImageContextWithOptions(banner.size, false, scale) 
image.drawInRect(CGRect(origin: CGPointZero, size: banner.size) 

let resizedImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext()