2017-04-24 2 views
0

イメージピッカー機能を使用して写真を撮るときのイメージの向きを変更する方法を教えてください。私は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は、異なるimageViewに最適な値です。 displayImageというのはimageViewが1つしかないので、コードを使うのは最適ではありません。しかし、将来、私は1つ以上のimageViewを使用したいと思います。 –

+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の延長であることを入れて、そしてあなたがそれを使用しなければならないすべてはself.currentImageView?.image = image.flipped()にごUIImagePickerデリゲートメソッドの割り当てを変更です。

+0

これは近いと思いますが、私は4つのエラーメッセージを受け取ります。私はエラーを示すために画像を追加しました。手伝ってくれてどうもありがとう。 –

+0

@JasonStoneはい、あなたはUIImageの拡張機能にその関数を入れる必要があります。新しい空のファイルを作成し、それらの中括弧の間に 'extension UIImage {}'とタイプして貼り付けると、他のファイルに置いたファイルを削除します。 – creeperspeak

+0

今、この画像は90度だけ回転しています。どうすれば270度回転できますか? –

関連する問題