使用 UIImagePickerController 从 iPhone 相机获取图像路径 return nil
Getting image path from the iPhone camera Using UIImagePickerController return nil
我正在尝试使用 UIImagePickerController
从相机获取图像路径
这是代码:
@IBAction func takePhoto(sender: UIButton) {
imagePicker = UIImagePickerController()
imagePicker?.allowsEditing = true
imagePicker?.delegate = self
imagePicker?.sourceType = .Camera
presentViewController(imagePicker!, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let imageURL = info[UIImagePickerControllerReferenceURL] as? NSURL
print(" Path \(imageURL)")
imageView?.contentMode = .ScaleAspectFit
imageView?.image = info[UIImagePickerControllerOriginalImage] as? UIImage
imagePicker?.dismissViewControllerAnimated(true, completion: nil)
}
有什么帮助吗?
代理 didFinishPickingMediaWithInfo
在使用相机拍摄照片后被调用。 UIImagePickerControllerReferenceURL
对象将是 nil
,因为图像尚未保存到相机胶卷。
要摆脱这种情况,需要先保存图片,然后使用保存路径的url。但是,您可以在 info
上使用 UIImagePickerControllerOriginalImage
属性 来在您的应用程序中显示拍摄的图像。希望这对您有所帮助!
我用这个方法保存相机拍摄的图像
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print(info)
var selectedImage: UIImage!
if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
selectedImage = image
} else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
selectedImage = image
}
self.profileImageView.image = selectedImage
if (picker.sourceType == UIImagePickerControllerSourceType.camera) {
let imgName = UUID().uuidString
let documentDirectory = NSTemporaryDirectory()
let localPath = documentDirectory.appending(imgName)
let data = UIImageJPEGRepresentation(selectedImage, 0.3)! as NSData
data.write(toFile: localPath, atomically: true)
let photoURL = URL.init(fileURLWithPath: localPath)
}
}
我正在尝试使用 UIImagePickerController
这是代码:
@IBAction func takePhoto(sender: UIButton) {
imagePicker = UIImagePickerController()
imagePicker?.allowsEditing = true
imagePicker?.delegate = self
imagePicker?.sourceType = .Camera
presentViewController(imagePicker!, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let imageURL = info[UIImagePickerControllerReferenceURL] as? NSURL
print(" Path \(imageURL)")
imageView?.contentMode = .ScaleAspectFit
imageView?.image = info[UIImagePickerControllerOriginalImage] as? UIImage
imagePicker?.dismissViewControllerAnimated(true, completion: nil)
}
有什么帮助吗?
代理 didFinishPickingMediaWithInfo
在使用相机拍摄照片后被调用。 UIImagePickerControllerReferenceURL
对象将是 nil
,因为图像尚未保存到相机胶卷。
要摆脱这种情况,需要先保存图片,然后使用保存路径的url。但是,您可以在 info
上使用 UIImagePickerControllerOriginalImage
属性 来在您的应用程序中显示拍摄的图像。希望这对您有所帮助!
我用这个方法保存相机拍摄的图像
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print(info)
var selectedImage: UIImage!
if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
selectedImage = image
} else if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
selectedImage = image
}
self.profileImageView.image = selectedImage
if (picker.sourceType == UIImagePickerControllerSourceType.camera) {
let imgName = UUID().uuidString
let documentDirectory = NSTemporaryDirectory()
let localPath = documentDirectory.appending(imgName)
let data = UIImageJPEGRepresentation(selectedImage, 0.3)! as NSData
data.write(toFile: localPath, atomically: true)
let photoURL = URL.init(fileURLWithPath: localPath)
}
}