Обрезать uiimage по размеру экрана

В моем приложении есть функция, которая позволяет пользователю перемещать и масштабировать изображение так же, как параметр allowEditing = YES с UIImagePickerController.

Мой подход заключается в наличии прокрутки, которая позволяет пользователю масштабировать с уровнем 1-4. В прокрутке есть только изображение.

В конце я хочу обрезать изображение по размеру экрана. Как мне это сделать?


person Hanon    schedule 22.11.2011    source источник
comment
Для вас, если вы хотите обрезать изображение, перейдите к фотографии ›› нажмите на фотографию, которую вы хотите обрезать, затем нажмите переключатель включения / выключения и кнопку «Домой», чтобы изображение стало спасать нас.   -  person Marios    schedule 22.11.2011


Ответы (1)


Хитрость заключается в том, чтобы захватить слой вида, содержащий масштабированное/повернутое изображение. В этом случае вам нужно захватить слой прокрутки, а НЕ само изображение.

У меня есть категория захвата UIImage для этого... проверьте моя статья и загрузите исходный код.

ОБНОВЛЕНИЕ: обрезать часть изображения в соответствии с комментарием ниже...

Сначала захватите весь вид, затем обрежьте изображение до указанного прямоугольника, используя следующий метод в категории UIImage+Resize (также в статье...)

- (UIImage *)croppedImage:(CGRect)bounds;
person Simon Lee    schedule 22.11.2011
comment
Хорошо, Саймон Ли, используя это, как реализовать изменение размера, например: 8930/customcropbox.jpg, не могли бы вы мне помочь? - person Marios; 22.11.2011
comment
Спасибо Саймон, я понял идею. Я захватываю слой прокрутки. Но проблема в том, что когда я увеличиваю масштаб и отображаю слой, экран результатов смещается с пробелами. Должен ли я записывать смещение или масштаб масштабирования, чтобы получить правильное выходное изображение? - person Hanon; 22.11.2011
comment
Вы должны использовать свойство смещения содержимого представления прокрутки, чтобы определить, где начинается прямоугольник (x и y), а затем ширину и высоту прокрутки для размера. - person Simon Lee; 22.11.2011
comment
проголосовал за вас, как вызвать метод uiimage+resize для обрезки изображения, пожалуйста, помогите, stackoverflow.com/questions/8238464/ - person Marios; 23.11.2011
comment
Это категория, поэтому это означает, что вы добавляете этот метод в существующий класс UIImage. Это означает, что вы можете вызвать [myImage croppedImage:CGRectMake(100, 200, 50, 25)]; для этого потребуется кадрирование изображения размером 100 пикселей по ширине, 200 по вертикали и размером 50x25 пикселей. - person Simon Lee; 23.11.2011
comment
я хочу, чтобы моя обрезка была динамической, не могли бы вы помочь мне, как я показал в приведенном выше формате jpg - person Marios; 24.11.2011
comment
Просто используйте рамку дополнительного представления (прямоугольник обрезки). - person Simon Lee; 24.11.2011
comment
извините, но я использую его, и он увеличивает изображение и обрезает его. - person Camus; 18.02.2014