티스토리 뷰
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)
}
'개발 > TIL(Today I Learned)' 카테고리의 다른 글
Swift) 내부 Notification 만들기 (0) | 2021.09.22 |
---|---|
Swift) Extension UIView (0) | 2021.09.22 |
Swift) UITableViewCell에서 imageView 변수명 (0) | 2021.09.22 |
Xcode) 디버깅 (0) | 2021.09.21 |
Swift) AutoLayout 설정 잘 했는데 왜 빨간점?? Content Hugging? 우선순위? (0) | 2021.09.19 |
댓글