Как установить собственное изображение в UIIMagePickerController

У меня есть UIActionSheet с 3 вариантами -

  1. Сделайте фото (с камеры)
  2. Выбрать из библиотеки
  3. Редактировать фото (если у пользователя есть аватар)

Я использую UIImagePickerController и не имею проблем с первыми двумя вариантами. Пользователь выбирает фотографию, а затем может масштабировать / перемещать, чтобы обрезать ее.

Итак, у меня вопрос - как я могу поместить уже сохраненную фотографию для редактирования (3-й вариант) с текущим масштабным коэффициентом и рамкой. Например, если я выберу «редактировать фотографию», я хочу получить такую ​​же фотографию ». "который я выбрал после предварительного просмотра.

Так работает родное приложение "Контакты"!

предварительный просмотр фотографии


person Injectios    schedule 06.07.2012    source источник


Ответы (1)


Вам необходимо получить доступ к объекту UIImagePickerControllerEditedImage в вашем методе делегата:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
    if (!image) image = [info objectForKey:UIImagePickerControllerOriginalImage];
    ....
}

Затем вы можете использовать это изображение в своем собственном контроллере представления редактирования. Приложение «Контакты» работает таким образом, потому что оно записывает отредактированное изображение обратно в ALAsset, что является деструктивным изменением. Вероятно, делать это для пользователей вашего приложения - плохая идея, поэтому лучше написать собственный контроллер редактирования изображения, который будет обрабатывать отредактированное изображение вместо UIImagePickerController. поиск на github показывает множество открытых- исходные репозитории, которые могут помочь вам с кадрированием здесь.

person coneybeare    schedule 06.07.2012
comment
Я предположил, что это мог быть какой-нибудь штатный персонал вроде pickerController.originalImage = originalImage; и pickierController.croppedImage = croppedImage; для запуска режима редактирования. - person Injectios; 06.07.2012