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
Tagged with:  

2 Responses to Utilisation optimale de UIImagePickerController

  1. Laurent dit :

    Excellent post, je rajouterais juste ce petit bout de code si tu veux annuler le picker :

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

  2. Florent dit :

    Merci ! Je l’intègre de suite.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">