在Swift中UIImageWriteToSavedPhotosAlbum之后的图像的URL

在我用相机拍照后,我使用以下代码保存图像:

UIImageWriteToSavedPhotosAlbum(image, self,"image:didFinishSavingWithError:contextInfo:", nil) 

这样可以将图像保存在相机胶卷中。 此外,我想将URL保存到Core Data中保存的图像。 是否可以检索URL(或路径),以便我只需要保存此URL而不是Core Data中的完整图像?

在阅读了在ObjectivC中编写的大量答案后,我终于想出了如何使用Xcode 6.2在Swift中编写这个:

 ALAssetsLibrary().writeImageToSavedPhotosAlbum(image.CGImage, orientation: ALAssetOrientation(rawValue: image.imageOrientation.rawValue)!, completionBlock:{ (path:NSURL!, error:NSError!) -> Void in println("\(path)") }) 

这是我的组合..

保存图片:

  let imageData = NSData(data:UIImagePNGRepresentation(pickedimage)) let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) var docs: String = paths[0] as! String let fullPath = docs.stringByAppendingPathComponent("yourNameImg.png") let result = imageData.writeToFile(fullPath, atomically: true) print(fullPath) 

获取图片:

  let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory let nsUserDomainMask = NSSearchPathDomainMask.UserDomainMask if let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) { if paths.count > 0 { if let dirPath = paths[0] as? String { let readPath = dirPath.stringByAppendingPathComponent("yourNameImg.png") let image = UIImage(contentsOfFile: readPath) UploadImagePreview.image = image } } } 

我们可以尝试使用Photos Framework来获取上次保存的图像。

  var fetchOptions: PHFetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] var fetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) if (fetchResult.firstObject != nil) { var lastAsset: PHAsset = fetchResult.lastObject as! PHAsset PHImageManager.defaultManager().requestImageForAsset(lastAsset, targetSize: self.UploadImagePreview.bounds.size, contentMode: PHImageContentMode.AspectFill, options: PHImageRequestOptions(), resultHandler: { (result, info) -> Void in self.UploadImagePreview.image = result }) }