Как я могу сделать фотографию с помощью своего iPhone-приложения?


18

Я пишу приложение iPhone с какао в xcode. Я не могу найти учебники или примеры кода, которые показывают, как делать фотографии со встроенной камеры. Как мне это сделать? Где я могу найти хорошую информацию?

Спасибо!

4

Класс UIImagePickerController позволяет фотографировать или выбирать из библиотеки фотографий. Укажите тип источника как UIImagePickerControllerSourceTypeCamera.

Смотрите также на этот вопрос ранее спросил: Access the camera with iPhone SDK


11

Использование UIImagePickerController. Здесь есть хороший учебник.

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

Вы должны установить тип источника для UIImagePickerControllerSourceTypeCamera или UIImagePickerControllerSourceTypePhotoLibrary. Обратите внимание, что эти два типа приводят к очень различным дисплеям на экране. Вы должны тщательно протестировать. В частности, если вы размещаете UIImagePickerController внутри UINavigationController, вы можете получить несколько навигационных баров и других странных эффектов, если не будете осторожны.

Смотрите также this thread


24

Просто скопируйте и вставьте следующий код в свой проект, чтобы получить полностью реализованы функциональные возможности.

где takePhoto и chooseFromLibrary мои собственные имена методов, которые будут вызываться на кнопку прикосновением.

Удостоверьтесь в том, что эти методы предназначены для ссылок на соответствующие кнопки.

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

Ответ Написал @WQS работает отлично, но содержит некоторые методы, которые устаревшее от прошивки 6. Вот обновленный ответ на IOS 6 & выше:

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

Не забудьте добавить это в вашем view controller.h:

@interface myVC<UINavigationControllerDelegate, UIImagePickerControllerDelegate> 

0

Вот мой код, который я использовал, чтобы сделать снимок для моего приложения

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

, если вы хотите, чтобы вернуть картину только простой добавить эту функцию

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