Wie kann ich ein Foto mit meiner iPhone App machen?


18

Ich schreibe eine iPhone App mit Cocoa in xcode. Ich kann keine Tutorials oder Beispielcodes finden, die zeigen, wie man Fotos mit der eingebauten Kamera macht. Wie mache ich das? Wo kann ich gute Informationen finden?

Danke!

4

Mit der Klasse UIImagePickerController können Sie Fotos aufnehmen oder aus der Fotobibliothek auswählen. Geben Sie den Quelltyp als UIImagePickerControllerSourceTypeCamera an.

Siehe auch diese Frage vorher gestellt: Access the camera with iPhone SDK


11

Verwendung UIImagePickerController. Hier gibt es ein gutes Tutorial.

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

Sie sollten den Quelltyp UIImagePickerControllerSourceTypeCamera oder UIImagePickerControllerSourceTypePhotoLibrary gesetzt. Beachten Sie, dass diese beiden Typen zu sehr unterschiedlichen Anzeigen auf dem Bildschirm führen. Sie sollten beide sorgfältig testen. Insbesondere, wenn Sie die UIImagePickerController innerhalb einer UINavigationController verschachteln, können Sie mit mehreren Navigationsleisten und andere seltsame Effekte enden, wenn Sie nicht vorsichtig sind.

Siehe auch this thread


24

Kopieren Sie einfach und fügen Sie ihn in Ihr Projekt folgenden Code vollständig umgesetzt Funktionalität zu erhalten.

wo takePhoto und chooseFromLibrary meine eigene Methode Namen sind, die auf Tastendruck aufgerufen werden.

Achten Sie darauf, die Ausgänge der entsprechenden Tasten für diese Methoden zu referenzieren.

-(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

Antwort von @WQS gepostet funktioniert gut, aber enthält einige Methoden, die von iOS sind veraltet 6. Hier ist die aktualisierte Lösung für iOS 6 & oben:

-(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. 
} 

nicht hinzufügen Vergessen dies in Ihrem view controller.h:

@interface myVC<UINavigationControllerDelegate, UIImagePickerControllerDelegate> 

0

Hier ist mein Code, die ich verwendet Bild für meine App nehmen

- (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]; 
} 

wenn Sie möchten Bild erneut aufzunehmen gerade einfach merken Um diese Funktion

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