我正在使用 saveImage 保存图像。
func saveImage (image: UIImage, path: String ) -> Bool{
let pngImageData = UIImagePNGRepresentation(image)
//let jpgImageData = UIImageJPEGRepresentation(image, 1.0) // if you want to save as JPEG
print("!!!saving image at: \(path)")
let result = pngImageData!.writeToFile(path, atomically: true)
return result
}
新信息:
无法正常保存文件(打印“[-] ERROR SAVING FILE”)--
// save your image here into Document Directory
let res = saveImage(tempImage, path: fileInDocumentsDirectory("abc.png"))
if(res == true){
print ("[+] FILE SAVED")
}else{
print ("[-] ERROR SAVING FILE")
}
为什么 saveImage 函数不保存图像?访问权限?
旧信息:
调试信息说:
!!!saving image at: file:///var/mobile/Applications/BDB992FB-E378-4719-B7B7-E9A364EEE54B/Documents/tempImage
然后我使用
检索这个位置fileInDocumentsDirectory("tempImage")
结果正确。
然后我使用这个路径加载文件
let image = UIImage(contentsOfFile: path)
if image == nil {
print("missing image at: \(path)")
}else{
print("!!!IMAGE FOUND at: \(path)")
}
路径是正确的,但是消息是“missing image at..”。该文件是否无法访问或未存储?这种行为的原因是什么?
我正在带有 ios 7 的 iphone 4 和带有 ios 7 模拟器的 iphone 5 上测试这段代码。
编辑: 1. fileInDocumentsDirectory函数
func fileInDocumentsDirectory(filename: String) -> String {
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let fileURL = documentsURL.URLByAppendingPathComponent(filename).absoluteString
return fileURL
}
最佳答案
此函数将在文档文件夹中保存图像:
func saveImage(image: UIImage) -> Bool {
guard let data = UIImageJPEGRepresentation(image, 1) ?? UIImagePNGRepresentation(image) else {
return false
}
guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
return false
}
do {
try data.write(to: directory.appendingPathComponent("fileName.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
使用:
let success = saveImage(image: UIImage(named: "image.png")!)
此函数将获取该图像:
func getSavedImage(named: String) -> UIImage? {
if let dir = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent(named).path)
}
return nil
}
使用:
if let image = getSavedImage(named: "fileName") {
// do something with image
}
关于ios - 保存图像然后在 Swift (iOS) 中加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344822/