如何从UIImagePickerController获取图像并传递给下一个VC

我从PhotoLibrary中select一张照片,我如何实现下面的任务

在这种情况下,我正在使用Swift。 我需要通过以下方式重build下一个VC中的图像:
a)字节
b)图像

通过使用Segue或用户类。 如果Image文件很大,最好通过segue或class。

1)从UIImagePickerController获取图像或字节

2)如何将图像字节传递给下一个VC
使用Segue
或使用类
我是否使用用户类来存储图像或字节?

3)如何获得高度和宽度,以便我可以知道图像是纵向还是横向模式。

4)如何检查ImageView中是否有图像?

导航到下一个VC之前,我有一个btn点击来检查

非常感谢您的帮助

以下是我使用的代码:

    @IBOutlet var imageView:UIImageView!

让imagePicker = UIImagePickerController()

  @IBAction func loadImageButtonTapped(sender:UIButton){
    imagePicker.allowsEditing = false
    imagePicker.sourceType = .PhotoLibrary

   presentViewController(imagePicker,animated:true,completion:nil)
 }


 //  -   -  UIImagePickerControllerDelegate方法

 func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo info:[NSObject:AnyObject]){

如果让图片=信息[UIImagePickerControllerOriginalImage]作为?  UIImage {
    imageView.contentMode = .ScaleAspectFit
    imageView.image = pickedImage
   }

   dismissViewControllerAnimated(true,completion:nil)
 }

  1. 您需要将委托分配给您的图像select器,以便调用适当的方法。 在loadImageButtonTapped函数中,不要忘记分配图像select器loadImageButtonTapped

那么,你应该实现这个方法:

  func imagePickerController (_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]){ let image = info[UIImagePickerControllerOriginalImage] } 

如果你需要找出图像的大小,你不能访问它的size属性。

  1. 要将图像传递给另一个视图控制器,可以使用以下两个选项之一:

    • 你可以使用委派
    • 你可以使用这个function,当你从视图控制器导航到另一个使用故事板segues:

       func prepareForSegue(_ segue: UIStoryboardSegue, sender sender: AnyObject?) { var destinationController = segue.destinationViewController // now you can pass the image to the destination view controller } 

PS: didFinishPickingImage 自iOS 3以来已弃用,您不应该使用该方法。

  picker.dismissViewControllerAnimated(true, completion: { () -> Void in let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage // Convert image to data and Send data anotherViewController image data UIImageJPEGRepresentation(self.pickedImage, 0.5) }) 

1)从UIImagePickerController获取图像

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{ //image object } 

2)将图像传递给其他ViewController在第二个VC中创buildUIimage属性,并为其分配图像对象。

 secondVC.imageProperty = image; 

3)获取图像的高度和宽度

 NSLog(@'image height: %f',image.size.height); NSLog(@'image width: %f',image.size.width); 

改为使用imagePickerController didFinishPickingImage:

1&2)

  // Class variable var image: UIImage? ... func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { self.image = image picker.dismissViewControllerAnimated(true, completion: { (finished) -> Void in // Perform your segue to your next VC }) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { // One of the two segue.destinationViewController.isKindOfClass(YourDestinationViewController) { if segue.identifier == "Your Destination View Controller Identifier" { let destinationViewController = segue.destinationViewController as! YourDestinationViewController destinationViewController.image = self.image } } 

3)

 image.size.height image.size.width