2015-06-20 30 views
1

我使用的UIImagePickerController從手機庫(IOS)獲得的圖像。編輯模式後,我把圖像放到我的UIImageView中。 我想保存在覈心數據這圖像中的另一個視圖控制器獲取圖像名稱中的UIImagePickerController斯威夫特

我該怎麼辦呢斯威夫特使用它。 如果我不能保存圖像有什麼選擇嗎?

+0

謝爾蓋你得到了名字的一部分嗎? Dharmesh幫助我走上正軌,但現在每個圖像都是tempImage.png;) – alex

回答

10

另一個很好的選擇是您可以將圖片保存到你的應用程序的文檔目錄,你可以從任何地方檢索圖像像下面的代碼所示:

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")) 

} 

這裏是幫手功能:

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 

} 

希望它會幫助你。

+0

非常感謝! –

+0

@Dharmesh你完全幫助我走向正確的方向。我有一個問題:我可以重命名保存的圖像或讀取當前的文件名? iPhone是否使用獨特的圖像命名? – alex

0

您可以使用存儲二進制數據的核心數據圖像屬性類型。 然後將您的圖像從拾取器更改爲NSData。

然後,只需保存它像別的。

但是你應該知道的幾件事情:

總是你的UIImage轉換爲NSData的格式

如果您遇到性能問題,請嘗試將二進制數據歸因於一個獨立的實體。

你應該抽象轉化爲NSData的你NSManagedObject子類的接口後面,所以你不必擔心從UIImage的NSData的到,反之亦然轉換。

如果您的圖片不密切相關的模型中的實體,我建議將它們存儲核心數據之外。

例子:

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){ 

    self.dismissViewControllerAnimated(true, completion: nil) 

    newImageData = UIImageJPEGRepresentation(image, 1) 

} 

myImageFromData = UIImage(data: newImageData)