2017-04-24 39 views
0

如何在使用圖像選擇器功能拍攝照片時更改圖像方向。我不想旋轉imageView。我只是想要使用圖像方向將拍攝的圖像上下顛倒顯示在imageView中。如何更改imagePicker中的圖像方向(swift3)

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) 

}} 

errors from answer

+0

currentImageView是不同imageViews的最佳值。它不是代碼的最佳用法,因爲只有1個imageView是displayImage。但在未來,我想使用多個imageViews。 –

+0

我不想存儲圖像。我只是想改變圖像的方向。你能否詳細瞭解你難以理解的內容。謝謝。 –

回答

0

要真正直接回答你的問題,你可以旋轉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()

+0

我覺得這很接近,但我收到4條錯誤消息。我添加了一張圖片來顯示錯誤。非常感謝你的幫助。 –

+0

@JasonStone是的,你需要把這個函數放在UIImage的擴展中。創建一個新的空文件並輸入'extension UIImage {}'在那些花括號之間粘貼該函數(並刪除放入其他文件的函數),它應該可以工作。 – creeperspeak

+0

現在這張圖片只能旋轉90度。我怎麼能把這個旋轉270度。 –

相關問題