Я пишу приложение для iPhone с Cocoa в xcode. Я не могу найти учебники или примеры кода, которые показывают, как делать фотографии со встроенной камеры. Как мне это сделать? Где я могу найти хорошую информацию?
Спасибо!
Я пишу приложение для iPhone с Cocoa в xcode. Я не могу найти учебники или примеры кода, которые показывают, как делать фотографии со встроенной камеры. Как мне это сделать? Где я могу найти хорошую информацию?
Спасибо!
Просто скопируйте и вставьте следующий код в свой проект, чтобы получить полностью реализованные функции.
где takePhoto и выберитеFromLibrary - мои собственные имена методов, которые будут вызываться при нажатии кнопки.
Удостоверьтесь, что для этих методов указываются соответствующие кнопки.
-(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.
}
Используйте UIImagePickerController. Здесь есть хороший учебник.
http://www.zimbio.com/iPhone/articles/1109/Picking+Images+iPhone+SDK+UIImagePickerController
Вы должны установить тип источника UIImagePickerControllerSourceTypeCamera или UIImagePickerControllerSourceTypePhotoLibrary. Обратите внимание, что эти два типа приводят к очень различным дисплеям на экране. Вы должны тщательно протестировать. В частности, если вы вставляете UIImagePickerController внутри UINavigationController, вы можете получить несколько навигационных баров и других странных эффектов, если не будете осторожны.
См. также этот поток
Класс UIImagePickerController позволяет делать снимки или выбирать их из библиотеки фотографий. Укажите тип источника как UIImagePickerControllerSourceTypeCamera.
См. также этот вопрос, который был ранее задан: Доступ к камере с iPhone SDK
Ответ, отправленный @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>
Вот мой код, который я использовал для съемки моего приложения.
- (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];
}