2016-02-08 3 views
1

У меня есть UIImagePickerController, чтобы позволить пользователю выбрать изображение, так как я хочу загрузить это изображение мне понадобится изображение «localURL». Есть ли способ получить этот localURL из моего сборщика.UIImagePickerController получить URL-адрес изображения с Swift

@IBOutlet weak var imageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    imagePicker.delegate = self 
} 

@IBAction func loadImageButtonTapped(sender: AnyObject) { 
    imagePicker.allowsEditing = false 
    imagePicker.sourceType = .PhotoLibrary 
    presentViewController(imagePicker, animated: true, completion: nil) 
} 


func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     imageView.contentMode = .ScaleAspectFit 
     imageView.image = pickedImage 
    } 

    dismissViewControllerAnimated(true, completion: nil) 
} 


func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
    dismissViewControllerAnimated(true, completion: nil) 
} 

ответ

2

Вы не получите ни одного локального URL-адреса, поскольку у вас нет доступа к изображениям за пределами контейнера приложения.

Вам не нужен файл для передачи изображения, NSData должно быть прекрасно. Я предлагаю вам превратить его в NSData как этот

let imageData: NSData = UIImagePNGRepresentation(pickedImage) 

Update: Как я уже сказал, вы не будете иметь доступ к реальному файлу. Единственный способ иметь изображение как файл - хранить его самостоятельно.

в вашем обновлении вы показали некоторый код для сохранения изображения самостоятельно, что имеет смысл. Это будет более результативным, если вы используете «selectedImage» при настройке «imageView.image» вместо того, чтобы записывать файл изображения и считывать его, преобразовывая его в «UIImage», а затем устанавливая его как «imageView.image»

Я все еще не понял, почему вам нужно изображение как файл, а не просто отправить NSData на ваш сервер. Может быть, это вариант стоит рассмотреть для Вас

+0

ки спасибо :) опубликуете обновление для этого –

+0

ваших обходного пути (кстати, вы должны опубликовать, что, как редактировать в ваш вопрос) не очень эффективен, так как вы пишете файл, а затем снова читаете изображение для просмотра изображения - пока у вас все еще есть доступ к selectedImage. . . Можете ли вы объяснить, почему именно вам нужно изображение в виде файла? – MarkHim

+0

Мне нужно это как файл, так как я загружаю его на сервер через SSH после выбора –

0

как работа вокруг я сделать сохранить изображение,

if let data = UIImageJPEGRepresentation(pickedImage, 0.8) { 
       let filename = getDocumentsDirectory().stringByAppendingPathComponent("image.jpg") 
       data.writeToFile(filename, atomically: true) 
       print("file saved as image.jpg") 
       print(filename) 

       var image = UIImage(contentsOfFile: filename) 
       imageView.image = image 

      }