我最近在我的項目中添加了一個cameraView
,一切正常。 儘管現在我還沒有真正捕捉照片,並且它的下一步我想實現...我如何拍照並預覽它
如果你能告訴我如何實現捕捉照片並用代碼預覽它,有
所以TakePhoto
功能將拍攝照片,然後拍攝的圖像IV將展示給我的previewPhotoViewController
CustomCameraView:
import UIKit
import AVFoundation
class CustomCameraViewController: UIViewController,UIImagePickerControllerDelegate {
@IBOutlet weak var cameraView: UIView!
let session: AVCaptureSession = AVCaptureSession()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
session.sessionPreset = AVCaptureSessionPresetHigh
if let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) {
do {
try session.addInput(AVCaptureDeviceInput(device: device))
} catch {
print(error.localizedDescription)
}
guard let previewLayer = AVCaptureVideoPreviewLayer(session: session) else {
print("no preview layer")
return
}
self.cameraView.layer.addSublayer(previewLayer)
previewLayer.frame = self.view.layer.bounds
}
session.startRunning()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidLoad() {
super.viewDidLoad()
}
override var preferredStatusBarStyle : UIStatusBarStyle {
return .lightContent
}
func TakePhoto(_ sender: UIButton) {
//Wants to take photo with this button funcntion...
}
,我開始用預覽頁面,以及:
PreviewPhotoViewController:
import UIKit
class PhotoPreviewViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var takenPhoto :UIImage?
override func viewDidLoad() {
super.viewDidLoad()
if let availableImage = takenPhoto {
imageView.image = availableImage
}
}
@IBAction func dismissView(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
感謝你的幫助
你可以在AVCaptureSession中使用AVCaptureVideoPreviewLayer。看看:https://stackoverflow.com/questions/44682698/how-to-take-uiimage-of-avcapturevideopreviewlayer-instead-of-avcapturephotooutpu/44727608#44727608 – ninjaproger