Quiero guardar y leer un UIImagen en mi carpeta temporal cuando se cierra la aplicación y luego cargarla y eliminarla cuando se carga la aplicación. ¿Cómo logro esto? Por favor ayuda.Cómo guardo y leo una imagen en mi carpeta temporal al salir y cargar mi aplicación
Respuesta
Estos métodos le permiten guardar y recuperar una imagen desde el directorio de documentos en el iPhone
+ (void)saveImage:(UIImage *)image withName:(NSString *)name {
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name];
[fileManager createFileAtPath:fullPath contents:data attributes:nil];
}
+ (UIImage *)loadImage:(NSString *)name {
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name];
UIImage *img = [UIImage imageWithContentsOfFile:fullPath];
return img;
}
Además, no siempre quiere guardar nada en el tmp
directorio real que desea alrededor después de la aplicación se apaga El directorio puede purgar el directorio tmp
. Por definición, existe únicamente para contener archivos menores necesarios solo cuando la aplicación se está ejecutando.
Los archivos que desea conservar siempre deben ir al directorio documents
.
Gracias, no sabía esto – Jaba
El No comprobado Swift pellizco de respuesta seleccionada:
class func saveImage(image: UIImage, withName name: String) {
let documentsDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
var data: NSData = UIImageJPEGRepresentation(image, 1.0)!
var fileManager: NSFileManager = NSFileManager.defaultManager()
let fullPath = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(name)
fileManager.createFileAtPath(fullPath.absoluteString, contents: data, attributes: nil)
}
class func loadImage(name: String) -> UIImage {
var fullPath: String = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent(name).absoluteString
var img:UIImage = UIImage(contentsOfFile: fullPath)!
return img
}
Código Probado para la rápida
//to get document directory path
func getDocumentDirectoryPath() -> NSString {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
llamada usando
if let data = UIImagePNGRepresentation(img) {
let filename = self.getDocumentDirectoryPath().stringByAppendingPathComponent("resizeImage.png")
data.writeToFile(filename, atomically: true)
}
Swift 3 xCode 8,2
Documentos directorio de obtención:
func getDocumentDirectoryPath() -> NSString {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory as NSString
}
Ahorro:
func saveImageToDocumentsDirectory(image: UIImage, withName: String) -> String? {
if let data = UIImagePNGRepresentation(image) {
let dirPath = getDocumentDirectoryPath()
let imageFileUrl = URL(fileURLWithPath: dirPath.appendingPathComponent(withName) as String)
do {
try data.write(to: imageFileUrl)
print("Successfully saved image at path: \(imageFileUrl)")
return imageFileUrl.absoluteString
} catch {
print("Error saving image: \(error)")
}
}
return nil
}
Carga:
func loadImageFromDocumentsDirectory(imageName: String) -> UIImage? {
let tempDirPath = getDocumentDirectoryPath()
let imageFilePath = tempDirPath.appendingPathComponent(imageName)
return UIImage(contentsOfFile:imageFilePath)
}
Ejemplo:
//TODO: pass your image to the actual method call here:
let pathToSavedImage = saveImageToDocumentsDirectory(image: imageToSave, withName: "imageName.png")
if (pathToSavedImage == nil) {
print("Failed to save image")
}
let image = loadImageFromDocumentsDirectory(imageName: "imageName.png")
if image == nil {
print ("Failed to load image")
}
Swift 4 aplicación:
// saves an image, if save is successful, returns its URL on local storage, otherwise returns nil
func saveImage(_ image: UIImage, name: String) -> URL? {
guard let imageData = UIImageJPEGRepresentation(image, 1) else {
return nil
}
do {
let imageURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent(name)
try imageData.write(to: imageURL)
return imageURL
} catch {
return nil
}
}
// returns an image if there is one with the given name, otherwise returns nil
func loadImage(withName name: String) -> UIImage? {
let imageURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent(name)
return UIImage(contentsOfFile: imageURL.path)
}
Ejemplo de uso (suponiendo que tenemos una imagen):
let image = UIImage(named: "milan")
let url = saveImage(image, name: "savedMilan.jpg")
print(">>> URL of saved image: \(url)")
let reloadedImage = loadImage(withName: "savedMilan.jpg")
print(">>> Reloaded image: \(reloadedImage)")
- 1. ¿Cómo guardo un ImageView como una imagen?
- 2. problema y comillas dobles y en mi aplicación Android
- 3. No puedo salir de mi ClipRectangle y quiero llorar
- 4. ¿Cómo crear nueve parches y usarlos en mi aplicación?
- 5. ¿Cómo restringir mi aplicación al modo horizontal?
- 6. ¿Cómo guardar imágenes y archivos grabados en el directorio temporal?
- 7. ¿Cómo guardo una imagen graficada y mantengo el tamaño de la imagen original en MATLAB?
- 8. ¿Cómo guardo una imagen en MySQL?
- 9. ¿Cómo leo una imagen base64 en WPF?
- 10. ¿Cómo guardo mi objeto en mi base de datos en LINQ to SQL?
- 11. Cargar y mostrar todas las imágenes de una carpeta
- 12. Excluyendo iPhone3GS y descargando de mi aplicación
- 13. cómo cargar, reproducir y almacenar videos de una mejor manera en mi sitio web
- 14. ¿Cómo guardo un objeto de diccionario en mi archivo web.config?
- 15. ¿Cómo hago referencia al archivo db Sqlite en la carpeta App_Data para mi aplicación web ASP.NET?
- 16. ¿Cómo guardo la imagen de la API del mapa de imágenes de google en mi servidor?
- 17. ¿Cómo puedo ejecutar mi código al cargar la clase?
- 18. iOS carpeta temporal ubicación
- 19. ¿dónde está la carpeta de mi aplicación en Android?
- 20. Mi (gran) aplicación arroja una OutOfMemoryException, ¿y ahora qué?
- 21. ¿Cómo escribo texto sobre una imagen en Android y la guardo?
- 22. En drupal, ¿cómo obtengo la URL de una imagen en la carpeta de mi módulo?
- 23. ¿Cómo demostrar mi interés y administrador mi software funciona?
- 24. "Al salir" para una aplicación de consola
- 25. ¿Cómo y dónde agregar xml personalizado en mi aplicación de Android?
- 26. ¿Cómo guardo un NSString como archivo .txt en el directorio de documentos locales de mi aplicación?
- 27. ¿Cómo guardo mi gemset de rvm mientras uso tmux?
- 28. cómo configurar apache2 y fastCGI para ejecutar mi aplicación C++
- 29. ¿Qué SRID debería usar para mi aplicación y cómo?
- 30. ¿Cómo firmar mi aplicación VB.NET?
Gracias por el tiempo de respuesta rápido. Y respuesta precisa. – Jaba
¿Y de dónde viene DocumentsDirectory? – jjxtra
Detalles sobre el directorio de documentos aquí http://stackoverflow.com/questions/6907381/what-is-the-documents-directory-nsdocumentdirectory/6907432#6907432 –