2017-02-03 62 views
0

以下代码对从图库中挑选的图像非常适用。但如果使用相机拍摄将无法使用。我试图将图像保存到存储器并再次阅读,但我无法做到这一点。那么,任何人都可以帮助我?谢谢。如何从使用相机拍摄的UIImagePickerController中获取图像名称

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


    if let referenceUrl = info[UIImagePickerControllerReferenceURL] as? NSURL, image = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      let phAsset = PHAsset.fetchAssetsWithALAssetURLs([referenceUrl], options: nil).lastObject as! PHAsset 
      PHImageManager.defaultManager().requestImageDataForAsset(phAsset, options: PHImageRequestOptions(), resultHandler: { (imagedata, dataUTI, orientation, info) in 
       if info!.keys.contains(NSString(string: "PHImageFileURLKey")) { 
        let path = info![NSString(string: "PHImageFileURLKey")] as! NSURL 
        print("path q\(path)") 

        self.mImageUrl = path 
        self.mlocalPath = path.path 
        self.mImageExtension = path.pathExtension 
        self.mImageName = path.lastPathComponent! 
        print("mImageName q\(self.mImageName)") 
       } 

      }) 
    } 

    dismissViewControllerAnimated(true, completion: nil) 

} 
+0

不使用图像选择器。使用具有更好能力的照片框架。 – Satyam

+0

@Satyam它仍然可以使用图像选择器,然后使用'fetchAssets(withALAssetURLs:options:)'获取'PHAsset'。 –

+0

@LeoNatan,我同意你的意见。我说照片框架更好用 – Satyam

回答

0

您可以使用一个通知,的addObserver这样

的ViewController答:您要形象得以改变,在viewDidLoad中

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.methodOfImageChange(_:)), name:"ImageChanged", object: nil) 

添加此添加此方法的ViewController一个

func methodOfImageChange(notification: NSNotification){ 
    let appStatus = notification.userInfo as? Dictionary<String,AnyObject> 
    // appStatus contains your image in "image" key 
    } 

Now in didFinishPickingMediaWithInfo add this

let dictionary: [String:AnyObject] = [ 
     "image" : (info[UIImagePickerControllerOriginalImage] as? UIImage)!, 
     ] 
    NSNotificationCenter.defaultCenter().postNotificationName("ImageChanged", object: self, userInfo: dictionary) 

    picker .dismissViewControllerAnimated(true, completion: nil) 

希望这有助于

0

的图像是不是在画廊,所以我不相信你有一个名字。

在我的应用程序流量(通过导航控制器)是:

  • 选择VC(相机或照片库中选择) - >
  • 的UIImagePickerController - >
  • 编辑VC(背部导航等等 - - 行动按钮)保存到图片库

如果用户选择相机,它们拍照和选项的“重拍”或“使用照片”。他们是否选择“使用照片”,他们在编辑VC中。

如果他们然后选择返回到选择VC,图像无处可找。

相关问题