Comment puis-je prendre une photo avec mon application iPhone?


18

J'écris une application iPhone avec Cocoa dans xcode. Je ne trouve aucun didacticiel ni aucun exemple de code montrant comment prendre des photos avec l'appareil photo intégré. Comment puis-je faire cela? Où puis-je trouver de bonnes informations?

Merci!

4

La classe UIImagePickerController vous permet de prendre des photos ou de les choisir dans la photothèque. Indiquez le type de source en tant que UIImagePickerControllerSourceTypeCamera.

Voir aussi cette question précédemment posée: Access the camera with iPhone SDK


11

Utilisez UIImagePickerController. Il y a un bon tutoriel à ce sujet ici.

http://www.zimbio.com/iPhone/articles/1109/Picking+Images+iPhone+SDK+UIImagePickerController

Vous devez définir le type de source à UIImagePickerControllerSourceTypeCamera ou UIImagePickerControllerSourceTypePhotoLibrary. Notez que ces deux types donnent des affichages très différents sur l'écran. Vous devriez tester les deux soigneusement. En particulier, si vous imbriquez le UIImagePickerController dans un UINavigationController, vous pouvez vous retrouver avec plusieurs barres de navigation et d'autres effets bizarres si vous ne faites pas attention.

Voir aussi this thread


24

il suffit de copier et coller le code suivant dans votre projet pour obtenir des fonctionnalités pleinement mises en œuvre.

takePhoto et chooseFromLibrary sont mes propres noms de méthodes qui seront appelés bouton tactile.

Veillez à référencer les prises des boutons appropriés à ces méthodes.

-(IBAction)takePhoto :(id)sender 

{ 
     UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
     { 
      [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera]; 
     } 

     // image picker needs a delegate, 
     [imagePickerController setDelegate:self]; 

    // Place image picker on the screen 
    [self presentModalViewController:imagePickerController animated:YES]; 
} 



-(IBAction)chooseFromLibrary:(id)sender 
{ 

    UIImagePickerController *imagePickerController= [[UIImagePickerController alloc] init]; 
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 

    // image picker needs a delegate so we can respond to its messages 
    [imagePickerController setDelegate:self]; 

    // Place image picker on the screen 
    [self presentModalViewController:imagePickerController animated:YES]; 

} 

//delegate methode will be called after picking photo either from camera or library 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    [myImageView setImage:image]; // "myImageView" name of any UIImageView. 
} 

1

réponse publié par @WQS fonctionne très bien, mais contient des méthodes qui sont dépréciées de iOS 6. Voici la réponse mise à jour pour iOS 6 & ci-dessus:

-(void)takePhoto 
{ 
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    { 
     [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    } 

    // image picker needs a delegate, 
    [imagePickerController setDelegate:self]; 

    // Place image picker on the screen 
    [self presentViewController:imagePickerController animated:YES completion:nil]; 
} 



-(void)chooseFromLibrary 
{ 

    UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init]; 
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 

    // image picker needs a delegate so we can respond to its messages 
    [imagePickerController setDelegate:self]; 

    // Place image picker on the screen 
    [self presentViewController:imagePickerController animated:YES completion:nil]; 

} 

//delegate methode will be called after picking photo either from camera or library 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

[myImageView setImage:image]; // "myImageView" name of any UImageView. 
} 

Ne pas oublier d'ajouter dans votre view controller.h:

@interface myVC<UINavigationControllerDelegate, UIImagePickerControllerDelegate> 

0

Voici mon code que je l'habitude de prendre des photos pour mon application

- (IBAction)takephoto:(id)sender { 

    picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    [picker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    [self presentViewController:picker animated:YES completion:NULL]; 


} 
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    img = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    [imageview setImage:img]; 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

si vous voulez reprendre l'image ajouter tout simple cette fonction

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
}