[swift] Swift Device의 사진 및 동영상 편집 기능
이번 포스트에서는 Swift를 사용하여 iOS 기기에서 사진과 동영상을 편집하는 방법에 대해 알아보겠습니다.
사진 편집
iOS 기기에서 사진을 편집하기 위해 UIImagePickerController
를 사용할 수 있습니다. 아래의 코드는 이미지 피커 컨트롤러를 열고 사용자가 이미지를 선택하면 선택한 이미지를 편집하는 방법을 보여줍니다.
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate {
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
}
func openImagePicker() {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let editedImage = info[.editedImage] as? UIImage {
// 선택한 이미지를 편집한 후에 할 작업
}
picker.dismiss(animated: true, completion: nil)
}
}
사진 편집을 위해 .allowsEditing
속성을 true
로 설정하고, 사용자가 편집한 이미지를 얻기 위해 didFinishPickingMediaWithInfo
메서드를 사용합니다.
동영상 편집
iOS 기기에서 동영상을 편집하기 위해 AVFoundation
프레임워크를 사용할 수 있습니다. 아래의 코드는 동영상을 편집하고 저장하는 방법을 보여줍니다.
import UIKit
import AVFoundation
class ViewController: UIViewController {
var videoURL: URL?
func openCamera() {
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let cameraPicker = UIImagePickerController()
cameraPicker.sourceType = .camera
cameraPicker.mediaTypes = [kUTTypeMovie as String]
cameraPicker.delegate = self
present(cameraPicker, animated: true, completion: nil)
}
}
func videoEditing() {
if let videoURL = videoURL {
let asset = AVURLAsset(url: videoURL)
let composition = AVMutableComposition()
let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
if let assetTrack = asset.tracks(withMediaType: .video).first {
try? videoTrack?.insertTimeRange(CMTimeRange(start: CMTime.zero, duration: assetTrack.timeRange.duration), of: assetTrack, at: CMTime.zero)
}
if let assetTrack = asset.tracks(withMediaType: .audio).first {
try? audioTrack?.insertTimeRange(CMTimeRange(start: CMTime.zero, duration: assetTrack.timeRange.duration), of: assetTrack, at: CMTime.zero)
}
// 동영상 편집 작업 수행
let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
let outputPath = NSTemporaryDirectory() + "editedVideo.mov"
exportSession?.outputURL = URL(fileURLWithPath: outputPath)
exportSession?.outputFileType = .mov
exportSession?.exportAsynchronously(completionHandler: {
// 편집된 동영상을 저장한 후에 할 작업
})
}
}
}
동영상을 편집하기 위해 AVURLAsset
과 AVMutableComposition
을 사용합니다. AVMutableComposition
객체를 생성한 뒤에 AVMutableCompositionTrack
을 추가하여 원하는 편집 작업을 수행할 수 있습니다.
동영상을 저장하기 위해 AVAssetExportSession
을 사용하고, 편집된 동영상을 원하는 경로에 저장한 뒤에 추가 작업을 수행할 수 있습니다.
위의 코드는 사진과 동영상의 간단한 편집 작업에 대한 예제입니다. 실제 애플리케이션에서는 더 복잡한 편집 작업을 수행할 수 있습니다. ```