在Swift中获取图像名称UIImagePickerController
我使用UIImagePickerController从手机库(iOS)中获取图像。 编辑模式后,我把图像到我的UIImageView。 我想将这个图像保存在Core Data中以在另一个View Controller中使用它
我怎么能在Swift中做到这一点。 如果这是不可能的,我必须保存图像有什么select?
另一个很好的select是你可以将你的图像保存到你的应用程序的文档目录中,你可以从下面的代码中的任何地方检索该图像:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { self.dismissViewControllerAnimated(true, completion: nil) let tempImage = info[UIImagePickerControllerOriginalImage] as! UIImage // save your image here into Document Directory saveImage(tempImage, path: fileInDocumentsDirectory("tempImage")) }
这里是帮手function:
func saveImage (image: UIImage, path: String ) -> Bool{ let pngImageData = UIImagePNGRepresentation(image) //let jpgImageData = UIImageJPEGRepresentation(image, 1.0) // if you want to save as JPEG let result = pngImageData.writeToFile(path, atomically: true) return result } // Get the documents Directory func documentsDirectory() -> String { let documentsFolderPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as! String return documentsFolderPath } // Get path for a file in the directory func fileInDocumentsDirectory(filename: String) -> String { return documentsDirectory().stringByAppendingPathComponent(filename) }
这样,您可以从文档目录中检索该图像:
@IBAction func setImage(sender: AnyObject) { imageV.image = loadImageFromPath(fileInDocumentsDirectory("tempImage")) }
这里是辅助函数:
func loadImageFromPath(path: String) -> UIImage? { let image = UIImage(contentsOfFile: path) if image == nil { println("missing image at: (path)") } println("\(path)") // this is just for you to see the path in case you want to go to the directory, using Finder. return image }
希望它会帮助你。
您可以使用二进制数据属性types将图像存储在核心数据中。 然后将您的图像从拾取器更改为NSData。
然后像其他任何东西一样保存。
但是,你应该知道一些事情:
总是将您的UIImage转换为NSData格式
如果遇到性能问题,请尝试将“二进制数据”属性移至单独的实体。
你应该在NSManagedObject子类的接口后面抽象转换到NSData,所以你不必担心从UIImage到NSData的转换,反之亦然。
如果你的图像与模型中的实体没有强相关,我build议将它们存储在核心数据之外。
例如:
func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){ self.dismissViewControllerAnimated(true, completion: nil) newImageData = UIImageJPEGRepresentation(image, 1) } myImageFromData = UIImage(data: newImageData)