要将图像保存到文档目录,您可以从创建保存图像的函数开始,如下所示。该函数处理为您创建图像名称并将其返回。
func saveImage(image: UIImage) -> String {
let imageData = NSData(data: UIImagePNGRepresentation(image)!)
let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let docs = paths[0] as NSString
let uuid = NSUUID().uuidString + ".png"
let fullPath = docs.appendingPathComponent(uuid)
_ = imageData.write(toFile: fullPath, atomically: true)
return uuid
}
现在,因为要保存图像的数组,你可以简单地循环,并调用saveImage功能:
for image in images {
saveImage(image: image)
}
如果您希望自己命名这些图像,你可以修改的第一个函数以下几点:
func saveImage(image: UIImage, withName name: String) {
let imageData = NSData(data: UIImagePNGRepresentation(image)!)
let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
let docs = paths[0] as NSString
let name = name
let fullPath = docs.appendingPathComponent(name)
_ = imageData.write(toFile: fullPath, atomically: true)
}
当您将图像保存为UIImagePNGRepresentation你正在尝试做的,请注意,是不保存的方向你。这意味着当您尝试检索图像时,可能会标题为左侧。您需要重新绘制图片以确保它的方向正确,因为这篇文章将解释how to save png correctly。但是,如果使用UIImageJPEGRepresentation保存图像,则不必担心所有这些,只需保存图像即可,无需额外工作。
编辑以GIVE IMAGES
要获取已保存的图像,可以使用下面的函数,你传递图像名称的数组的数组,你会得到一个数组回来:
func getImage(imageNames: [String]) -> [UIImage] {
var savedImages: [UIImage] = [UIImage]()
for imageName in imageNames {
if let imagePath = getFilePath(fileName: imageName) {
savedImage.append(UIImage(contentsOfFile: imagePath))
}
}
return savedImages
}
依赖于该功能的工作:
func getFilePath(fileName: String) -> String? {
let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
var filePath: String?
let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
if paths.count > 0 {
let dirPath = paths[0] as NSString
filePath = dirPath.appendingPathComponent(fileName)
}
else {
filePath = nil
}
return filePath
}
让一切:NSMutableArray的= arrayData作为! NSMutableArray whatever.write(toFile:filename,atomically:true) –