본문 바로가기
IOS&Mac

[Swift] Image Picker

by MOVE🔥 2021. 4. 25.
728x90
반응형

 

@IBOutlet weak var sulIMG: UIImageView!
let picker = UIImagePickerController()
    
override func viewDidLoad() {
	// ImgView 에 Action 추가
    let tgr = UITapGestureRecognizer(target: self, action: #selector(ImagePick))
    sulIMG.isUserInteractionEnabled = true
    sulIMG.addGestureRecognizer(tgr)
}

 

// ImageView 클릭시 호출됨
@objc func ImagePick() {
        //ImpagePicker alert 구현
        let alert = UIAlertController(title: "술 사진을 골라주세요", message: nil, preferredStyle: .actionSheet)
        let album = UIAlertAction(title: "사진앨범", style: .default){
            (action) in self.openAlbum()
        }
        let camera = UIAlertAction(title: "카메라", style: .default){
            (action) in self.openCamera()
        }
        let delete = UIAlertAction(title: "삭제", style: .destructive){
            //TODO 추가 이미지 setting (+)
            (action) in print("")
        }
        let cancel = UIAlertAction(title: "취소", style: .cancel, handler: nil)
        
        alert.addAction(album)
        alert.addAction(camera)
        alert.addAction(delete)
        alert.addAction(cancel)
        
        present(alert, animated: true, completion: nil)
    }
    func openAlbum() {
        picker.sourceType = .photoLibrary
        present(picker, animated: false, completion: nil)
    }
    func openCamera() {
        if(UIImagePickerController .isSourceTypeAvailable(.camera)){
            picker.sourceType = .camera
            present(picker, animated: false, completion: nil)
        }else{
            // 카메라 못연다는 alert
            let alert = UIAlertController(title: "카메라 열기 실패", message: "카메라 열기에 실패했습니다.", preferredStyle: .alert)
            let cancel = UIAlertAction(title: "확인", style: .cancel, handler: nil)
            alert.addAction(cancel)
            present(alert, animated: false, completion: nil)
        }
    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let img = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            sulIMG.image = img
        }
        dismiss(animated: true, completion: nil)
    }
    
    func saveImg(){
        let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

        // Convert to Data
        if let data = sulIMG.image!.jpegData(compressionQuality: 0.5) {
            do {
                try data.write(to: documents.appendingPathComponent(self.sulName.text! + ".jpg"))
            } catch {
                // 이미지 저장실패 alert
                let alert = UIAlertController(title: "이미지 저장 실패", message: "이미지를 저장하는대 실패하였습니다.", preferredStyle: .alert)
                let cancel = UIAlertAction(title: "확인", style: .cancel, handler: nil)
                alert.addAction(cancel)
                present(alert, animated: false, completion: nil)
            }
        }
    }

 

 

 

 

 

728x90
반응형

'IOS&Mac' 카테고리의 다른 글

[swift] TextField 입력형식 제어  (0) 2023.02.27
[swift] Table View 다루기  (0) 2023.02.27
[Swift] Launch Screen 로딩화면 만들기  (2) 2020.06.21
SearchBar 와 TableView 만들기  (0) 2018.03.07
KEXT Programming , KEXT 실행  (0) 2017.02.15

댓글