Я пишу приложение для 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];
}