Utilisation optimale de UIImagePickerController

Quand vous utilisez UIImagePickerController pour prendre une photo avec l’iPhone depuis la bibliothèque ou bien l’appareil photo, il vous est possible d’éditer cette dernière grâce à l’option setAllowsEditing.

Cela se présente donc comme ceci :

if (imagePickerController == nil) { 		imagePickerController = [[UIImagePickerController alloc] init]; 		[imagePickerController setDelegate:self]; 		[imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera]; 		[imagePickerController setAllowsEditing:YES]; 	}   	[self presentModalViewController:imagePickerController animated:YES];

Jusqu’ici, pas de problème.

Seulement, c’est après que les problèmes arrives. Vous récupérez votre image via

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [...] }

Et vous vous rendez compte que l’image originale correspond à la capacité de l’appareil (3Mpx pour le 3GS) mais pas l‘image éditée qui est elle en 320×320 !!!

La méthode à utiliser est donc la suivante :

  • récupérer l’image originale
  • la mettre à l’endroit, car c’est à l’endroit qu’est créé le repère de découpe
  • utiliser le repère pour découper l’image
  • redimensionner l’image découpée aux dimensions souhaitées

Et voilà, vous avez votre belle image bien découpée et de bonne qualité !

Et si vous voulez annuler, voici le code (merci Laurent) :

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {     //Cancel     [[picker parentViewController] dismissModalViewControllerAnimated:YES]; }

Vous trouverez un projet d’exemple ci-dessous.

Télécharger le projet XCode d’exemple

Share