如何从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) }
- 您需要将委托分配给您的图像select器,以便调用适当的方法。 在
loadImageButtonTapped
函数中,不要忘记分配图像select器loadImageButtonTapped
。
那么,你应该实现这个方法:
func imagePickerController (_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]){ let image = info[UIImagePickerControllerOriginalImage] }
如果你需要找出图像的大小,你不能访问它的size
属性。
-
要将图像传递给另一个视图控制器,可以使用以下两个选项之一:
- 你可以使用委派
-
你可以使用这个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