티스토리 뷰

extension UIImage {
    func resize(to targetSize: CGSize) -> UIImage? {
        let size = self.size
        
        let widthRatio = targetSize.width / size.width
        let heightRatio = targetSize.height / size.height
        
        var newSize: CGSize
        if (widthRatio > heightRatio) {
            newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
        } else {
            newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
        }
        
        let rect = CGRect(origin: .zero, size: newSize)
        
        UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
        self.draw(in: rect)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return newImage
    }
}

 

extension MainViewController: UIImagePickerControllerDelegate & UINavigationControllerDelegate {
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        self.dismiss(animated: true, completion: nil)
    }
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[.originalImage] as? UIImage {
            DispatchQueue.global().async {
                let resizedImage = image.resize(to: CGSize(width: 800, height: 800))!
                
                DispatchQueue.main.async {
                    self.selectedImage = resizedImage
                    self.imageView.image = resizedImage
                }
            }
        }
            
        self.dismiss(animated: true, completion: nil)
    }
}

 

@IBAction func presentAlbum() {
        let controller = UIImagePickerController()
        
        controller.sourceType = .photoLibrary
        controller.delegate = self
        
        self.present(controller, animated: true, completion: nil)
    }
    
    @IBAction func presentCamera() {
        guard UIImagePickerController.isSourceTypeAvailable(.camera) else {
            print("카메라 사용불가")
            return
        }
        
        let controller = UIImagePickerController()
        
        controller.sourceType = .camera
        controller.allowsEditing = true
        controller.delegate = self
        
        self.present(controller, animated: true, completion: nil)
    }
    
    @IBAction func saveImage() {
        guard let index = selectedIndex else {
            return
        }
        
        let filter = manager.list[index]
        let filteredImage = filter.convert(selectedImage)
        
        UIImageWriteToSavedPhotosAlbum(filteredImage, nil, nil, nil)
        
        let controller = UIAlertController(title: "이미지 저장완료", message: "이미지를 성공적으로 저장하였습니다", preferredStyle: .alert)
        let action = UIAlertAction(title: "확인", style: .default, handler: { action in
            print("확인")
        })
        controller.addAction(action)
        present(controller, animated: true, completion: nil)
    }
댓글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
최근에 올라온 글