ver quedan pasar los las guardar guardan donde descargados crear como carpetas archivos app iphone objective-c ios uiimage

iphone - quedan - ¿Cómo guardo un UIImage en un archivo?



donde se guardan los archivos descargados de safari en iphone (8)

Si tengo un UIImage de un imagePicker, ¿cómo puedo guardarlo en una subcarpeta en el directorio de documentos?


En Swift 3:

// Create path. let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let filePath = "/(paths[0])/MyImageName.png" // Save image. UIImagePNGRepresentation(image)?.writeToFile(filePath, atomically: true)


En Swift 4:

// Create path. let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) if let filePath = paths.first?.appendingPathComponent("MyImageName.png") { // Save image. do { try UIImagePNGRepresentation(image)?.write(to: filePath, options: .atomic) } catch { // Handle the error } }


Lo anterior es útil, pero no responde a su pregunta de cómo guardar en un subdirectorio u obtener la imagen de un UIImagePicker.

En primer lugar, debe especificar que su controlador implemente el delegado del selector de imágenes, en archivos de código .m o .h, como por ejemplo:

@interface CameraViewController () <UIImagePickerControllerDelegate> @end

Luego implementa el método imagePickerController: didFinishPickingMediaWithInfo del delegado, que es donde puede obtener la fotografía del selector de imágenes y guardarla (por supuesto, puede tener otra clase / objeto que maneje el guardado, pero solo mostraré el código dentro del método):

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // get the captured image UIImage *image = (UIImage *)info[UIImagePickerControllerOriginalImage]; NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *imageSubdirectory = [documentsDirectory stringByAppendingPathComponent:@"MySubfolderName"]; NSString *filePath = [imageSubdirectory stringByAppendingPathComponent:@"MyImageName.png"]; // Convert UIImage object into NSData (a wrapper for a stream of bytes) formatted according to PNG spec NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:filePath atomically:YES]; }

Si desea guardar como imagen JPEG, las últimas 3 líneas serían:

NSString *filePath = [imageSubdirectory stringByAppendingPathComponent:@"MyImageName.jpg"]; // Convert UIImage object into NSData (a wrapper for a stream of bytes) formatted according to JPG spec NSData *imageData = UIImageJPEGRepresentation(image, 0.85f); // quality level 85% [imageData writeToFile:filePath atomically:YES];


Por supuesto, puede crear subcarpetas en la carpeta de documentos de su aplicación. Utiliza NSFileManager para hacer eso.

Utiliza UIImagePNGRepresentation para convertir su imagen a NSData y guardarla en el disco.

// Create path. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"]; // Save image. [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

Core Data no tiene nada que ver con guardar imágenes en el disco por cierto.


Primero debe obtener el directorio de Documentos

/* create path to cache directory inside the application''s Documents directory */ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"fileName"];

Entonces debes guardar la foto en el archivo

NSData *photoData = UIImageJPEGRepresentation(photoImage, 1); [photoData writeToFile:filePath atomically:YES];



NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:path atomically:YES];

donde ruta es el nombre del archivo en el que desea escribirlo.


extension UIImage { /// Save PNG in the Documents directory func save(_ name: String) { let path: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! let url = URL(fileURLWithPath: path).appendingPathComponent(name) try! UIImagePNGRepresentation(self)?.write(to: url) print("saved image at /(url)") } } // Usage: Saves file in the Documents directory image.save("climate_model_2017.png")