Создать изображение с помощью приложения “камера” на 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.: это перевод оригинального англоязычного поста.
Полезная статья? Их будет больше, если вы поддержите меня!