2016-06-26 3 views
0

В моем приложении, у меня есть кнопка, с которой я открываю в галерее, как показано ниже:IOS Swift Изображение поворачивается при загрузке в UIImageView

@IBAction func selectPhoto() { 
    let photoPicker = UIImagePickerController() 
    photoPicker.delegate = self 
    photoPicker.sourceType = .PhotoLibrary 
    self.presentViewController(photoPicker, animated: true, completion: nil) 
} 

я позволить пользователю выбрать снимок и сохранить его:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    photoImageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage   
    let fileName:String = "logo.png"   
    let arrayPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString   
    let pngFileName = arrayPaths.stringByAppendingPathComponent(fileName)    UIImagePNGRepresentation(photoImageView.image!)!.writeToFile(pngFileName, atomically:true)   
    imageSave.setObject(fileName, forKey: "pngFileName")   
    self.dismissViewControllerAnimated(false, completion: nil) 
} 

После этого с контроллера просмотра изображения сохраняются каждый раз, когда пользователь добирается до сцены, используя код ниже.

override func viewDidLoad() { 
    super.viewDidLoad() 

    if imageSave.stringForKey("pngFileName") != nil 
    { 
     let path = NSSearchPathForDirectoriesInDomains(
      .DocumentDirectory, .UserDomainMask, true)[0] as NSString 
     let fileName = NSUserDefaults.standardUserDefaults() 
      .stringForKey("pngFileName") 
     let imagePath = path.stringByAppendingPathComponent(fileName!) 
     let image = UIImage(contentsOfFile: imagePath)    
     photoImageView.image = image 

    } 

Проблема: Когда изображение загружается обратно на UIImageView, ориентация изображения иногда поворачивается вправо на 90 градусов, иногда поворачивается влево на 90 градусов, а иногда и показано, как он был спасен.

Пожалуйста, дайте мне знать, что я делаю неправильно здесь. Любая помощь будет оценена по достоинству. Спасибо

+1

Возможный дубликат [iPhone, как определить ориентацию изображения, когда оно было принято] (http://stackoverflow.com/questions/5928257/iphone-how-to-detect-orientation-of-image- когда-он-был принят) – tbilopavlovic

+0

Я попытался определить ориентацию изображений, которые я сохраняю, но тогда я не могу применить эту ориентацию к изображению в viewDidLoad(). Любая подсказка о том, как можно получить полученное значение Ориентации для изображения в viewDidLoad()? Благодарю. –

ответ

0

У меня была та же проблема, из-за разных размеров прямоугольника, где показана фотография. Вы можете сделать трюк и сохранить вместо исходного изображения скопированную версию. Это отбросит проблему вращения, которая на самом деле является подходящей проблемой.

let imageName = info[UIImagePickerControllerOriginalImage] as! UIImage 
let thumb1 = UIImageJPEGRepresentation(imageName, 0.8) 
btnImageView.image = UIImage(data: thumb1!) 

Это просто быстрый и грязный ответ, но работал на меня. :-)

Смежные вопросы