iPhone: как реализовать функцию перемещения и масштабирования для изображения, извлеченного из библиотеки фотографий - PullRequest
8 голосов
/ 29 февраля 2012

Как показано на следующем рисунке, я хочу реализовать функцию «перемещать и масштабировать» для изображения, извлеченного из библиотеки фотографий.

Если у вас есть идея или код, сообщите мне.

image

Заранее спасибо.

Ответы [ 5 ]

7 голосов
/ 29 февраля 2012

См. ответ Джейн Сэйлс

Из Ответа на этот вопрос Установить размеры для поля обрезки UIImagePickerController «Move and Scale»

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

Вот ссылка для Изменение размера + UIImage

1) Ссылка для обрезки UIImage

2) Другая ссылка

3) Другие функции UIImage

3 голосов
/ 13 июня 2013

Это очень поздно, но, надеюсь, это поможет.

В методе делегата UIImagePickerController imagePickerController:didFinishPickingMediaWithInfo: доступ к "перемещенному" и "масштабированному" изображению осуществляется с помощью клавиши UIImagePickerControllerEditedImage, например,

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
     UIImage *img = (UIImage *)[info objectForKey: UIImagePickerControllerEditedImage];

 // Do what you need to with that image

 }

Надеюсь, это кому-нибудь поможет!

2 голосов
/ 12 сентября 2013

Может быть, вы ищете:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setAllowsEditing:YES];

Тогда в методе делегата:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
    if(!chosenImage) {
        chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}
1 голос
/ 23 декабря 2018

В Swift 4.2, убедитесь, что pickerController.allowsEditing = true добавлен к методу, который обращается к вашим фотографиям.

Затем создайте следующий метод с двумя уточняющими «операторами if». «Операторы if» будут охватывать два различных сценария: 1) пользователь редактирует фотографию - .editedImage ИЛИ 2) пользователь не редактировал фотографию - .originalImage.

Чтобы этот метод работал правильно, сначала поместите .editedImage "if if". Я не знаю, почему это так, но мне пришлось.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {

        imageView.image = editedImage

    } else if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {

        imageView.image = image
    }


    self.dismiss(animated: true, completion: nil)

}
0 голосов
/ 29 февраля 2012

Пожалуйста, пройдите этот ответ, только если другие не работают ....:)

В проекте ZBar есть несколько примеров приложений, в которых используется штрих-код.Это позволяет перемещать и масштабировать изображение.Я посмотрел на код.Но вы можете попробовать как последний вариант.

...