Voglio salvare e leggere un UIImage nella mia cartella temporanea quando la mia app si chiude e quindi caricarla ed eliminarla quando l'app viene caricata. Come posso realizzare questo. Per favore aiuto.Come salvare e leggere un'immagine nella mia cartella temporanea quando si esce e si carica la mia app
risposta
Questi metodi consentono di salvare e recuperare un'immagine dalla directory documenti su 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;
}
Inoltre, non si mai voglia di salvare nulla nella directory tmp
reale che si desidera in giro dopo l'app si spegne. La directory tmp
può essere eliminata dal sistema. Per definizione, esiste solo per contenere file secondari necessari solo quando l'app è in esecuzione.
I file che si desidera conservare devono sempre andare nella directory documents
.
Grazie, non lo sapevo – Jaba
La testato Swift Tweak per risposta selezionata:
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
}
Testato Codice in rapida
//to get document directory path
func getDocumentDirectoryPath() -> NSString {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory
}
chiamata utilizzando
if let data = UIImagePNGRepresentation(img) {
let filename = self.getDocumentDirectoryPath().stringByAppendingPathComponent("resizeImage.png")
data.writeToFile(filename, atomically: true)
}
Swift 3 xCode directory 8.2
Documenti ottenere:
func getDocumentDirectoryPath() -> NSString {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
return documentsDirectory as NSString
}
risparmio:
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
}
Caricamento:
func loadImageFromDocumentsDirectory(imageName: String) -> UIImage? {
let tempDirPath = getDocumentDirectoryPath()
let imageFilePath = tempDirPath.appendingPathComponent(imageName)
return UIImage(contentsOfFile:imageFilePath)
}
Esempio:
//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 implementazione:
// 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)
}
esempio di utilizzo (supponendo che abbiamo un'immagine):
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. Come si usa un servlet nella mia app Grails?
- 2. Impossibile leggere la mia variabile di ambiente nella mia app nodejs
- 3. come nascondere foto dalla galleria e memorizzarlo nella mia app
- 4. Come aggiungere PLCrashReporter nella mia app?
- 5. Dove viene posizionata la mia app quando si esegue la distribuzione su Tomcat?
- 6. Come creare nove patch e usarlo nella mia app?
- 7. Perché la mia app angular2 si inizializza due volte?
- 8. La mia app si chiude in ios6 con UIAppearance setTintColor
- 9. Come arrivare CLLocationManager nella mia app
- 10. La mia app si arresta in modo anomalo e si chiude e ci sono pochissime informazioni sul perché
- 11. Come aggiungere l'icona della mia app nella barra di stato quando la mia app è in esecuzione?
- 12. Come implementare AccountManager nella mia app
- 13. Errore di convalida del bundle quando si include l'SDK di Google+ nella mia app iOS
- 14. Come posso mantenere la mia app inattiva?
- 15. NSLog rallenterà la mia app?
- 16. Come collego la mia estensione alla mia app per Android?
- 17. SIGSEGV 'SEGV_MAPERR' si blocca nella mia app che si trova su Apple Store
- 18. Usa blocco schermo nella mia app
- 19. Come integrare la funzionalità skype nella mia app nativa
- 20. Quando si usa PHPExcel, perché l'autosize allunga la mia immagine?
- 21. Swift: quando si tenta di aprire un URL in Safari dalla mia app, viene visualizzato un errore quando si tenta di aprire un URL dalla mia app
- 22. Genera/crea file mdump nella mia app
- 23. Android e PhoneGap: errore si verifica quando si carica la funzione javascript con loadUrl
- 24. Android, Come leggere il codice QR nella mia applicazione?
- 25. Come trovare gli attributi su cui si divide la mia struttura quando si utilizza scikit-learn?
- 26. Come aprire l'immagine nella mia app ios da un'altra app?
- 27. Come riprodurre un mp3 nella cartella res/raw della mia app Android?
- 28. La notifica di Facebook dalla mia app appare e scompare
- 29. Come avviare la mia app a livello di programmazione, se si apre un'altra app?
- 30. Come leggere il pdf nella mia applicazione Android?
Grazie per il tempo di risposta rapida. E risposta accurata. – Jaba
E da dove proviene la directory Documenti? – jjxtra
Dettagli sulla directory dei documenti qui http://stackoverflow.com/questions/6907381/what-is-the-documents-directory-nsdocumentdirectory/6907432#6907432 –