Как я могу сфотографироваться с моим приложением для iPhone? - PullRequest
18 голосов
/ 24 сентября 2008

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

Спасибо!

Ответы [ 5 ]

24 голосов
/ 12 сентября 2012

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

, где 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.
}
11 голосов
/ 24 сентября 2008

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

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

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

См. Также эту тему

4 голосов
/ 24 сентября 2008

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

См. Также этот вопрос ранее задавался: Доступ к камере с помощью iPhone SDK

1 голос
/ 25 февраля 2014

Ответ, отправленный @WQS, работает нормально, но содержит некоторые методы, которые устарели в iOS 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 голосов
/ 08 октября 2014

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

- (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...