[swift] Swift에서 카메라로 스포츠 촬영하기
스포츠를 즐기는 사람이라면, 특별한 순간을 기록하고 싶을 때가 많을 겁니다. Swift로 카메라 앱을 만들어서 스포츠 촬영을 쉽게 해볼까요?
필요한 기능
- 카메라 접근: 사용자의 카메라에 접근해서 실시간으로 화면을 보여줍니다.
- 사진 촬영: 버튼을 누르면 현재 화면을 촬영하여 저장합니다.
- 비디오 녹화: 버튼을 누르고 있는 동안 화면을 녹화하여 저장합니다.
카메라 접근 및 화면 표시
import UIKit
import AVFoundation
class CameraViewController: UIViewController, AVCapturePhotoCaptureDelegate {
var captureSession: AVCaptureSession!
var stillImageOutput: AVCapturePhotoOutput!
override func viewDidLoad() {
super.viewDidLoad()
captureSession = AVCaptureSession()
captureSession.sessionPreset = .photo
guard let backCamera = AVCaptureDevice.default(for: .video) else { return }
do {
let input = try AVCaptureDeviceInput(device: backCamera)
stillImageOutput = AVCapturePhotoOutput()
if captureSession.canAddInput(input) && captureSession.canAddOutput(stillImageOutput) {
captureSession.addInput(input)
captureSession.addOutput(stillImageOutput)
setupLivePreview()
}
} catch let error {
print("Error Unable to initialize back camera: \(error.localizedDescription)")
}
}
func setupLivePreview() {
// 기기의 화면을 보여주기 위한 코드
}
}
사진 촬영
@IBAction func capturePhoto(_ sender: Any) {
let settings = AVCapturePhotoSettings()
stillImageOutput.capturePhoto(with: settings, delegate: self)
}
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
guard error == nil else { return }
guard let imageData = photo.fileDataRepresentation() else { return }
let image = UIImage(data: imageData)
// 촬영한 이미지를 저장하거나 다른 작업 수행
}
비디오 녹화
비디오 녹화에 대한 코드는 조금 더 복잡합니다. 관련 자료를 참고하시기 바랍니다.
마치며
이렇게 Swift로 간단한 카메라 앱을 만들고, 스포츠 촬영을 할 수 있게 되었습니다. 앱을 더 발전시켜서 필요한 기능을 추가해보세요. 재미있는 스포츠 촬영이 되길 바라겠습니다!
참고: Apple Developer Documentation