iOS SDK. Получение фотографий с камеры и сохранение их на устройстве

Создать изображение с помощью приложения “камера” на iPhone очень легко. UIImagePickerControler дает доступ к камере, съемке фотографий и пред просмотра результатов. Также есть опция поддержки изменения размера и масштабирования фотографии. Используя UIImageWriteToSavedPhotosAlbum, которая определена в UIKit, вы можете легко сохранить изображение в фотоальбом.

Запуск камеры

Для работы с камерой, мы сначала создадим объект UIImagePickerController и настроим sourceType на UIImagePickerControllerSourceTypeCamera. Для примера, я установил allowsImageEditing в NO для отключения редактирования фотографии. Я использую presentModalViewController для отображения камеры.

// создаем image picker controller
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// устанавливаем в качестве источника для камеру
imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;
// ставим делегатом себя
imagePicker.delegate = self;
// позволить редактирование картинки?
imagePicker.allowsImageEditing = NO;
// показываем imagePicker
[self presentModalViewController:imagePicker animated:YES];

Сохранение изображения в фотоальбом

Сначала нужно получить фотографию. Когда будет вызываться метод didFinishPickingMediaWithInfo, у нас будет возможность сохранить изображение в фотоальбом:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
  {
 // Доступ к необрезанному изображению через словарь
 UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
 //сохранение изображения
 UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
 [picker release];

Обратите внимание на вызов селектора выше, этот селектор будет вызываться один раз, когда изображение было записано системой. В этом примере я выведу alert с  уведомление о результате попытки сохранить фотографию:

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
 UIAlertView *alert;
 // невозможность сохранить фотографию
 if (error)
 alert = [[UIAlertView alloc] initWithTitle:@"Error";
 message:@"Unable to save image to Photo Album."
  			delegate:self cancelButtonTitle:@"Ok"
   			otherButtonTitles:nil];
 else // All is well
 alert = [[UIAlertView alloc] initWithTitle:@"Success"
 message:@"Image saved to Photo Album."
 delegate:self cancelButtonTitle:@"Ok"
 otherButtonTitles:nil];
 [alert show];
 [alert release];
}

Необязательные дополнения

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

1 — Проверка камеры на устройстве. Обращайтесь посту поддерживает ли iPhone камеру, чтобы узнать об этом больше.

2 – Установите опцию редактирования изображения в YES. Это потребует некоторых дополнительных изменений, включая запрос информации из словаря (см. UIImagePickerControllerCropRect).

Исходный код

Вы можете загрузить исходный код для этого приложения здесь.

P.S.: это перевод оригинального англоязычного поста.

Полезная статья? Их будет больше, если вы поддержите меня!

https://money.yandex.ru/embed/small.xml?account=410011399843532&quickpay=small&yamoney-payment-type=on&button-text=06&button-size=l&button-color=orange&targets=%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D1%8E+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82+lexpenz.com&default-sum=50&successURL=