2016-01-25 40 views
0

這是我的相機應用程序的代碼。相機應用程序//我需要什麼代碼才能顯示剛剛拍攝的照片?

ViewController.swift

import UIKit 
import AVFoundation 

class ViewController: UIViewController, UIGestureRecognizerDelegate { 

    var input:AVCaptureDeviceInput! 
    var output:AVCaptureStillImageOutput! 
    var session:AVCaptureSession! 
    var preView:UIView! 
    var camera:AVCaptureDevice! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // 畫面タップでシャッターを切るための設定 
     let tapGesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:") 
     // デリゲートをセット 
     tapGesture.delegate = self; 
     // Viewに追加. 
     self.view.addGestureRecognizer(tapGesture) 

    } 


    // メモリ管理のため 
    override func viewWillAppear(animated: Bool) { 
     // スクリーン設定 
     setupDisplay() 
     // カメラの設定 
     setupCamera() 
    } 

    // メモリ管理のため 
    override func viewDidDisappear(animated: Bool) { 
     // camera stop メモリ解放 
     session.stopRunning() 

     for output in session.outputs { 
      session.removeOutput(output as? AVCaptureOutput) 
     } 

     for input in session.inputs { 
      session.removeInput(input as? AVCaptureInput) 
     } 
     session = nil 
     camera = nil 
    } 

    func setupDisplay(){ 
     //スクリーンの幅 
     let screenWidth = UIScreen.mainScreen().bounds.size.width; 
     //スクリーンの高さ 
     let screenHeight = UIScreen.mainScreen().bounds.size.height; 

     // プレビュー用のビューを生成 
     preView = UIView(frame: CGRectMake(0.0, 0.0, screenWidth, screenHeight)) 

    } 

    func setupCamera(){ 

     // セッション 
     session = AVCaptureSession() 

     for caputureDevice: AnyObject in AVCaptureDevice.devices() { 
      // 背面カメラを取得 
      if caputureDevice.position == AVCaptureDevicePosition.Back { 
       camera = caputureDevice as? AVCaptureDevice 
      } 
      // 前面カメラを取得 
      //if caputureDevice.position == AVCaptureDevicePosition.Front { 
      // camera = caputureDevice as? AVCaptureDevice 
      //} 
     } 

     // カメラからの入力データ 
     do { 
      input = try AVCaptureDeviceInput(device: camera) as AVCaptureDeviceInput 
     } catch let error as NSError { 
      print(error) 
     } 

     // 入力をセッションに追加 
     if(session.canAddInput(input)) { 
      session.addInput(input) 
     } 

     // 靜止畫出力のインスタンス生成 
     output = AVCaptureStillImageOutput() 
     // 出力をセッションに追加 
     if(session.canAddOutput(output)) { 
      session.addOutput(output) 
     } 

     // セッションからプレビューを表示を 
     let previewLayer = AVCaptureVideoPreviewLayer(session: session) 

     previewLayer.frame = preView.frame 

     //  previewLayer.videoGravity = AVLayerVideoGravityResize 
     //  previewLayer.videoGravity = AVLayerVideoGravityResizeAspect 
     previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

     // レイヤーをViewに設定 
     // これを外すとプレビューが無くなる、けれど撮影はできる 
     self.view.layer.addSublayer(previewLayer) 

     session.startRunning() 
    } 


    // タップイベント. 
    func tapped(sender: UITapGestureRecognizer){ 
     print("タップ") 
     takeStillPicture() 
    } 

    func takeStillPicture(){ 

     // ビデオ出力に接続. 
     if let connection:AVCaptureConnection? = output.connectionWithMediaType(AVMediaTypeVideo){ 
      // ビデオ出力から畫像を非同期で取得 
      output.captureStillImageAsynchronouslyFromConnection(connection, completionHandler: { (imageDataBuffer, error) -> Void in 

       // 取得畫像のDataBufferをJpegに変換 
       let imageData:NSData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataBuffer) 

       // JpegからUIImageを作成. 
       let image:UIImage = UIImage(data: imageData)! 

       // アルバムに追加. 
       UIImageWriteToSavedPhotosAlbum(image, self, nil, nil) 

      }) 
     } 
    } 

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

這個程序只是拍照,並自動保存它,沒有別的。要顯示剛拍攝到屏幕上的圖片,您需要寫什麼代碼?

+1

只要有在屏幕上一個UIImageView和分配您的圖像imangeView.image – MatanGold

回答

0

此行之後:

UIImageWriteToSavedPhotosAlbum(image, self, nil, nil); 

使用ImageView的(從故事板拖放或手動添加通過代碼),並且比設置的圖像:

imageView.image = image; 
+0

更新的答案與詳細信息 – alessioarsuffi

相關問題