2015-09-24 2 views
0

Я создаю приложение, и мне нужно заставить пользователя загружать квадратные картинки (как это делает Instagram), однако я бы хотел избежать программирования интерфейса с нуля, поскольку мы «короткое время».Swift - force square photo from library and camera

Важно отметить, что ПОЛЬЗОВАТЕЛЬ должен ВЫБРАТЬ, какую часть изображения он хочет показать, поэтому обрезка изображения программно без запроса пользователя не может быть и речи.

Мне удалось заставить это работать через камеру, однако через библиотеку я не могу заставить пользователя использовать квадратное изображение. Вот код, у меня есть:

func presentGallery(){ 
    // from library 
    picker.allowsEditing = true 
    picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 
    presentViewController(picker, animated: true, completion: nil) 
} 

Тогда на моей imagepickercontroller:

var chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage 

Однако я не получаю желаемого результата. Было бы хорошо, если бы «минимальный зум» должен был показывать 100% высоты изображения, или если бы я мог добавить белый/черный фон в верхнюю и нижнюю части изображения.

Вот проблема: enter image description here

Вместо того, чтобы что-то вроде этого:

enter image description here

Мое приложение должно работать начиная с iOS7.

+0

Вы можете использовать первое расширение для возврата квадратного изображения. Если это не решит вашу проблему, сообщите мне, чтобы я мог повторно открыть ваш вопрос. –

+0

@LeoDabus благодарит за вашу помощь, однако, используя ваш код, изображение обрезается. важно показать всю информацию, которую хочет пользователь. Вот почему мне нужна одна из этих двух вещей: 1) Добавьте «пиксели» в верхнюю/нижнюю или левую/правую сторону изображения, чтобы сделать его квадратным 2) Принудительно выберите квадрат изображения из (второе изображение, которое я загрузил) – Waclock

+0

, чтобы сделать изображение с квадрата камеры, вам всегда нужно обрезать его, так или иначе, я снова открыл вопрос. –

ответ

0

Вы должны сделать какую-то проверку, чтобы убедиться, что изображение квадратное, если они выбирают из своей библиотеки.

Как только вы получите изображение (используя imagePickerController didFinishPickingMediaWithInfo), затем получите изображение с [info objectForKey:UIImagePickerControllerOriginalImage];. После того, как вы сделали это, выполнить проверку:

if (image.size.height != image.size.width) // Show some alert 

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

+0

Не очень удобный подход, я боюсь.Невозможно показать предупреждение после выбора изображения, заявив, что выбранное изображение неверно. – Waclock

+0

Я обновил свой ответ еще одним удобным для пользователя предложением, как то, что делает Instagram! –

+0

Спасибо Стивен за ваш ответ, да, я бы искал то, что вы добавили, однако мне понадобится помощь в его реализации (в основном я заявил в своем вопросе, что мне нужно, что instagram предлагает ха-ха) – Waclock