Fix Image Orientation

This commit is contained in:
Joel Klabo
2023-04-04 17:59:54 -07:00
committed by William Casarin
parent bfb47c0f85
commit 196cfdec4b

View File

@@ -45,11 +45,13 @@ struct ImagePicker: UIViewControllerRepresentable {
// Handle the selected image // Handle the selected image
onImagePicked(imageURL) onImagePicked(imageURL)
} else if let cameraImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { } else if let cameraImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
if let imageURL = saveImageToTemporaryFolder(image: cameraImage, imageType: "jpeg") { let orientedImage = cameraImage.fixOrientation()
if let imageURL = saveImageToTemporaryFolder(image: orientedImage, imageType: "jpeg") {
onImagePicked(imageURL) onImagePicked(imageURL)
} }
} else if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage { } else if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
if let editedImageURL = saveImageToTemporaryFolder(image: editedImage) { let orientedImage = editedImage.fixOrientation()
if let editedImageURL = saveImageToTemporaryFolder(image: orientedImage, imageType: "jpeg") {
onImagePicked(editedImageURL) onImagePicked(editedImageURL)
} }
} }
@@ -118,3 +120,16 @@ struct ImagePicker: UIViewControllerRepresentable {
} }
} }
extension UIImage {
func fixOrientation() -> UIImage {
guard imageOrientation != .up else { return self }
UIGraphicsBeginImageContextWithOptions(size, false, scale)
draw(in: CGRect(origin: .zero, size: size))
let normalizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return normalizedImage ?? self
}
}