ver transferir puedo pasar las importar fotos example crear como carpetas archivos iphone objective-c uiimage uiimagepickercontroller

puedo - transferir fotos de iphone a pc



iPhone-UIImagePickerController-> guardar la imagen en la carpeta de aplicaciones (4)

Tengo una aplicación para iPhone que utiliza un UIImagePickerController . Como sourceType tengo

  • UIImagePickerControllerSourceTypePhotoLibrary
  • UIImagePickerControllerSourceTypeCamera
  • UIImagePickerControllerSourceTypeSavedPhotosAlbum

para que el usuario pueda hacer una foto o seleccionar una de la biblioteca de fotos de las fotos o las fotos de la cámara.

La imagen se mostrará en un UIImageView. La imagen debe guardarse si el usuario cierra la aplicación. Así que para los campos de texto, uso NSUserDefaults . Lo sé, no es una buena manera de guardar la imagen dentro de NSUSerDefaults con NSData, así que quiero guardar / copiar la imagen en una carpeta controlada por mi aplicación similar a NSUserDefaults.

¿Cómo puedo hacer esto? Quiero guardarlo, y luego puedo escribir la ruta del archivo en mi NSUserDefaults y leerlo al iniciar la aplicación.

Gracias de antemano y Saludos cordiales.


Actualiza la respuesta de Knuku para Swift 3.0

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { //obtaining saving path let fileManager = FileManager.default let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first let imagePath = documentsPath?.appendingPathComponent("image.jpg") // extract image from the picker and save it if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { try! UIImageJPEGRepresentation(pickedImage, 0.0)?.write(to: imagePath!) } self.dismiss(animated: true, completion: nil) }

aquí la imagen se guarda como jpeg pero también puede guardarla como png. el parámetro 0.0 significa compresión y es la calidad más baja, si desea obtener el mejor uso 1.0.


Dependiendo del formato de archivo que desee guardar, puede utilizar

[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];

O

[UIImageJPEGRepresentation(image) writeToFile:path atomically:YES];


Este es el código para guardar el UIImage en el directorio del documento. Puede usar este código en el método delegado didFinishPickingImage:

// Create paths to output images NSString *pngPath = [NSHomeDirectory(); stringByAppendingPathComponent:@"Documents/Test.png"]; NSString *jpgPath = [NSHomeDirectory(); stringByAppendingPathComponent:@"Documents/Test.jpg"]; // Write a UIImage to JPEG with minimum compression (best quality) // The value ''image'' must be a UIImage object // The value ''1.0'' represents image compression quality as value from 0.0 to 1.0 [UIImageJPEGRepresentation(image, 1.0) writeToFile:jpgPath atomically:YES]; // Write image to PNG [UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES]; // Let''s check to see if files were successfully written... // Create file manager NSError *error; NSFileManager *fileMgr = [NSFileManager defaultManager]; // Point to Document directory NSString *documentsDirectory = [NSHomeDirectory(); stringByAppendingPathComponent:@"Documents"]; // Write out the contents of home directory to console NSLog(@"Documents directory: %@", [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error]);

EDITAR

También puedes usar:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];

para encontrar la ruta al directorio de documentos de su aplicación, en lugar de NSHomeDierctory.


Puede usar el siguiente código en la implementación del delegado UIImagePickerControllerDelegate

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { //obtaining saving path NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"latest_photo.png"]; //extracting image from the picker and saving it NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; if ([mediaType isEqualToString:@"public.image"]){ UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage]; NSData *webData = UIImagePNGRepresentation(editedImage); [webData writeToFile:imagePath atomically:YES]; } }

Eso es todo