Подтвердить что ты не робот

Установить размеры для UIImagePickerController "перемещение и масштабирование" обрезки

Как экран "перемещать и масштабировать" определяет размеры для его обрезки?

В принципе, я хотел бы установить фиксированную ширину и высоту для "CropRect" и позволить пользователю перемещать и масштабировать его изображение, чтобы поместиться в этом поле по желанию.

Кто-нибудь знает, как это сделать? (Или, если это возможно даже с UIImagePickerController)

Спасибо!

4b9b3361

Ответ 1

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

CGRect cropGuide = self.cropGuideView.visibleRect;
UIEdgeInsets edges = self.cropGuideView.edgeWidths;
CGPoint cropGuideOffset = self.cropScrollView.contentOffset;

CGPoint origin = CGPointMake( cropGuideOffset.x + edges.left, cropGuideOffset.y + edges.top );
CGSize size = cropGuide.size;
CGRect crop = { origin, size };

crop.origin.x = crop.origin.x / self.cropScrollView.zoomScale;
crop.origin.y = crop.origin.y / self.cropScrollView.zoomScale;
crop.size.width = crop.size.width / self.cropScrollView.zoomScale;
crop.size.height = crop.size.height / self.cropScrollView.zoomScale;

photo = [photo croppedImage:crop];

Ответ 3

Вот решение для ручной обрезки Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View

Он предлагает прямоугольную рамку, которую пользователь может скользить или перетаскивать, чтобы соответствовать требуемой части изображения в прямоугольнике. Обратите внимание, что это решение делает обратный вопрос: размер прямоугольника меняется, но в конечном итоге приводит к желаемому результату.

Он закодирован в Objective-C. Возможно, вам придется либо закодировать его в Swift, либо просто построить заголовок моста для подключения кода Objective-C с кодом Swift.