Создать изображение с помощью приложения “камера” на iPhone очень легко. UIImagePickerControler дает доступ к камере, съемке фотографий и пред просмотра результатов. Также есть опция поддержки изменения размера и масштабирования фотографии. Используя UIImageWriteToSavedPhotosAlbum, которая определена в UIKit, вы можете легко сохранить изображение в фотоальбом.
Запуск камеры
Для работы с камерой, мы сначала создадим объект UIImagePickerController и настроим sourceType на UIImagePickerControllerSourceTypeCamera. Для примера, я установил allowsImageEditing в NO для отключения редактирования фотографии. Я использую presentModalViewController для отображения камеры.
1 2 3 4 5 6 7 8 9 10 |
// создаем image picker controller UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; // устанавливаем в качестве источника для камеру imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; // ставим делегатом себя imagePicker.delegate = self; // позволить редактирование картинки? imagePicker.allowsImageEditing = NO; // показываем imagePicker [self presentModalViewController:imagePicker animated:YES]; |
Сохранение изображения в фотоальбом
Сначала нужно получить фотографию. Когда будет вызываться метод didFinishPickingMediaWithInfo, у нас будет возможность сохранить изображение в фотоальбом:
1 2 3 4 5 6 7 |
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // Доступ к необрезанному изображению через словарь UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; //сохранение изображения UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); [picker release]; |
Обратите внимание на вызов селектора выше, этот селектор будет вызываться один раз, когда изображение было записано системой. В этом примере я выведу alert с уведомление о результате попытки сохранить фотографию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
- (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.: это перевод оригинального англоязычного поста.
Полезная статья? Их будет больше, если вы поддержите меня!