如何在 imagePicker (swift3) 中更改图像方向
How to change image Orientation in imagePicker (swift3)
如何在使用图像选择器功能拍照时更改图像方向。我不是要旋转 imageView。我只想使用图像方向将拍摄的图像倒置显示在 imageView 中。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var displayImage: UIImageView!
var currentImageView: UIImageView?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
self.currentImageView?.image = image
self.dismiss(animated: true)
}
@IBAction func takePhoto(_ sender: Any) {
self.currentImageView = self.displayImage
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}}
要真正直接回答您的问题,您可以旋转 UIImage
本身或旋转 imageView
。在这里,我为您编写了一个函数,您可以在 UIImage
的扩展中实现该函数,它将翻转图像。使用起来非常简单,但没有更多上下文,我不知道它是否正是您要找的东西。你也可能会失去一些质量。
public func flipped() -> UIImage {
var transform: CGAffineTransform = CGAffineTransform.identity
transform = transform.translatedBy(x: self.size.width, y: self.size.height)
transform = transform.rotated(by: CGFloat(Double.pi))
guard let cgImage = self.cgImage, let colorSpace = cgImage.colorSpace, let context: CGContext = CGContext(data: nil, width: Int(self.size.width), height: Int(self.size.height), bitsPerComponent: cgImage.bitsPerComponent, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return self }
context.concatenate(transform)
context.draw(cgImage, in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
guard let transformed = context.makeImage() else { return self }
return UIImage(cgImage: transformed)
}
将它放在 UIImage
的扩展中,要使用它,您只需将 UIImagePicker
委托方法分配更改为 self.currentImageView?.image = image.flipped()
。
如何在使用图像选择器功能拍照时更改图像方向。我不是要旋转 imageView。我只想使用图像方向将拍摄的图像倒置显示在 imageView 中。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var displayImage: UIImageView!
var currentImageView: UIImageView?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
self.currentImageView?.image = image
self.dismiss(animated: true)
}
@IBAction func takePhoto(_ sender: Any) {
self.currentImageView = self.displayImage
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}}
要真正直接回答您的问题,您可以旋转 UIImage
本身或旋转 imageView
。在这里,我为您编写了一个函数,您可以在 UIImage
的扩展中实现该函数,它将翻转图像。使用起来非常简单,但没有更多上下文,我不知道它是否正是您要找的东西。你也可能会失去一些质量。
public func flipped() -> UIImage {
var transform: CGAffineTransform = CGAffineTransform.identity
transform = transform.translatedBy(x: self.size.width, y: self.size.height)
transform = transform.rotated(by: CGFloat(Double.pi))
guard let cgImage = self.cgImage, let colorSpace = cgImage.colorSpace, let context: CGContext = CGContext(data: nil, width: Int(self.size.width), height: Int(self.size.height), bitsPerComponent: cgImage.bitsPerComponent, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else { return self }
context.concatenate(transform)
context.draw(cgImage, in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
guard let transformed = context.makeImage() else { return self }
return UIImage(cgImage: transformed)
}
将它放在 UIImage
的扩展中,要使用它,您只需将 UIImagePicker
委托方法分配更改为 self.currentImageView?.image = image.flipped()
。