UIImagePickerController позволяет не работать
Я использую UIImagePickerController, чтобы позволить пользователю делать снимок. Я хочу, чтобы он впоследствии его редактировал, но что бы я ни делал, я ничего не получаю. Вот мой код (я использую Xamarin):
UIImagePickerController imagePicker = new UIImagePickerController ();
// set our source to the camera
imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
// set what media types
//imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera);
// show the camera controls
imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext;
imagePicker.ShowsCameraControls = true;
imagePicker.AllowsEditing = true;
imagePicker.SetEditing (true,true);
imagePicker.PreferredContentSize = new SizeF(900,600);
imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo;
imagePicker.Title="taste.eat. image";
// attach the delegate
imagePicker.Delegate = new ImagePickerDelegate();
// show the picker
NavigationController.PresentViewController(imagePicker, true,null);
Я что-то пропустил?
EDIT:
Я следил за учебником, и я нахожусь на экране с прямоугольником, но если я панорамирую или увеличиваю масштаб, он просто отскакивает назад в центр, когда я поднимаю палец. Можно ли перейти к этому экрану из приложения для фотографий?
![Image from the photos application]()
Ответы
Ответ 1
При использовании делегата UIImagePickerController -imagePickerController: didFinishPickingMediaWithInfo: мы получаем изображение, используя
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
Этот код всегда будет возвращать исходное изображение, даже если редактирование включено.
Попробуйте использовать
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
Это приведет к возврату отредактированного изображения, если редактирование включено.
Надеюсь, что это поможет.
Ответ 2
Свойство AllowsEditing
просто позволяет пользователю обрезать квадрат, если вы выбираете изображение и обрезаете видео, если вы выбираете видео.
Любые другие функции должны быть реализованы с помощью пользовательского интерфейса и кода.
Посмотрите на этот вопрос: iPhone SDK - Как настроить обрез в UIImagePickerController с помощью allowEditing?
То, что вы показываете на скриншоте, не является частью UIImagePickerController
, к сожалению
Ответ 3
SWIFT 3
Мне было трудно вернуть обрезанное изображение (простая ошибка на моем конце). Вместо использования UIImagePickerControllerOriginalImage вам потребуется UIImagePickerControllerEditedImage. См. Ниже:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
// The info dictionary contains multiple representations of the image, and this uses the cropped image.
let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
// Set yourImageView to display the selected image.
yourImage.image = selectedImage
// Dismiss the picker.
dismiss(animated: true, completion: nil)
}
Ответ 4
В enable filters
нет способа изменить свойство, например allowsEditing = YES
. Он отобразит только инструмент обрезки. Согласно вашему снимку экрана, похоже, что у вас встроена некоторая некорректная библиотека с открытым исходным кодом, и, не глядя на исходный код, было бы сложно исправить ошибку обрезки центра.
Лучше публиковать некоторые конкретные подробности о вашей реализации или переключиться на .
Ответ 5
Это будет такая работа.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
userPhoto.image = selectedImage
dismiss(animated: true, completion: nil)
}