반응형
Info.plist에서 Privacy - Camera Usage Description 추가해주기

import AVFoundation
Define Instance Variables
var captureSession: AVCaptureSession!
var photoOutput: AVCapturePhotoOutput!
var videoPreviewLayer: AVCaptureVideoPreviewLayer!
viewDidLoad()
captureSession = AVCaptureSession()
captureSession.beginConfiguration()
guard let captureDevice = AVCaptureDevice.default(for: AVMediaType.video) else { return }
do {
let cameraInput = try AVCaptureDeviceInput(device: captureDevice)
photoOutput = AVCapturePhotoOutput()
captureSession.addInput(cameraInput)
captureSession.sessionPreset = .photo
captureSession.addOutput(photoOutput)
captureSession.commitConfiguration()
} catch {
print(error)
}
//preview
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
DispatchQueue.main.async {
self.videoPreviewLayer.frame = self.previewView.bounds
}
videoPreviewLayer?.videoGravity = .resizeAspectFill
self.previewView.layer.addSublayer(videoPreviewLayer)
captureSession.startRunning()
self.videoPreviewLayer.frame = self.previewView.bounds
videoPreviewLayer 화면을 비동기로 설정해주지 않으면 위치가 좀 이상하게 뜨더라. 신기행
Taking the picture
@IBAction func takePhoto(_ sender: Any) {
photoOutput?.capturePhoto(with: AVCapturePhotoSettings(), delegate: self as AVCapturePhotoCaptureDelegate)
}
Process the captured photo
AVCapturePhotoCaptureDelegate 프로토콜을 추가해준 후
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
guard let imageData = photo.fileDataRepresentation() else { return }
let image = UIImage(data: imageData)
// 이미지뷰에 이미지 설정
}
728x90
반응형
'Swift iOS 앱 개발 > iOS' 카테고리의 다른 글
UIScrollViewDelegate (0) | 2022.09.15 |
---|---|
[Swift iOS] 앱에서 web 페이지 여는 방법 세 가지 (0) | 2022.09.02 |
[Objective-C iOS] OpenCV detect rectangle 윤곽선 가져오기 (0) | 2022.01.12 |
[iOS] 아이폰 웹뷰 디버깅 (0) | 2022.01.06 |
[swift iOS] 앱 강제종료 (0) | 2021.12.21 |