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.



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];
}
Merci ! Je l’intègre de suite.