2015-03-07 1 views
1

Я пытаюсь захватить изображение с помощью AVFoundation и при захвате выходного изображения очень темное (почти выглядит Like Черный экран) Это мой код, и я новичок в Swift поэтому любая помощь будет высокоПопытка захватить изображение с помощью AVFoundation и при захвате выходного изображения очень темное (почти выглядит как черный экран)

import UIKit 
import AVFoundation 
import MobileCoreServices 

class ViewController: UIViewController { 

    let captureSession = AVCaptureSession() 
    var previewLayer : AVCaptureVideoPreviewLayer? 
    var captureDevice : AVCaptureDevice? 

    @IBOutlet var captureView: UIView! 
    @IBOutlet var capturedImage: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     captureSession.sessionPreset = AVCaptureSessionPresetHigh 
     let devices = AVCaptureDevice.devices() 
     for device in devices { 
      if (device.hasMediaType(AVMediaTypeVideo)) { 
       if(device.position == AVCaptureDevicePosition.Back) { 
        captureDevice = device as? AVCaptureDevice 
        if captureDevice != nil { 
         beginSession() 
        } 
       } 
      } 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    func beginSession() { 
     var err : NSError? = nil 
     captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err)) 
     if err != nil { 
      println("error: \(err?.localizedDescription)") 
     } 
     previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
     self.captureView.layer.addSublayer(previewLayer) 

     previewLayer?.frame = self.captureView.layer.frame 
     captureSession.startRunning() 
    } 

    @IBAction func capture(sender: AnyObject) { 

     var stillImageOutput = AVCaptureStillImageOutput() 
     stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 

     if captureSession.canAddOutput(stillImageOutput) { 
      captureSession.addOutput(stillImageOutput) 
     } 

     if let videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo){ 
      stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: { 
       (sampleBuffer, error) in 
       var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) 
       var dataProvider = CGDataProviderCreateWithCFData(imageData) 
       var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, kCGRenderingIntentDefault) 
       var image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.Right) 

       var capturedImage = UIImageView(image: image) 


       //Show the captured image to 


       //Save the captured preview to image 
       UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

      }) 
     } 
    } 



} 
+0

Это странно. Но есть ли какое-то изображение? На самом деле это не все черное? – Ohiovr

ответ

2

Переместить этот блок кода

stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 

if captureSession.canAddOutput(stillImageOutput) { 
captureSession.addOutput(stillImageOutput) 
} 

к

func beginSession()