Я буквально врезаюсь в это лицо буквально несколько дней, и хотя я постоянно чувствую, что я на грани откровения, я просто не могу достичь своей цели.
Я подумал, заблаговременно на концептуальных этапах моего дизайна, что было бы тривиально взять изображение с камеры или библиотеки iPhone, уменьшить его до указанной высоты, используя функцию, эквивалентную опции Aspect Fill : UIImageView (полностью в коде), а затем обрезать все, что не помещалось в переданный CGRect.
Получение исходного изображения с камеры или библиотеки было тривиально. Я шокирован тем, насколько сложными оказались два других шага.
Прикрепленное изображение показывает, чего я пытаюсь достичь. Кто-нибудь, пожалуйста, будьте любезны, чтобы держать меня за руку? Каждый пример кода, который я нашел до сих пор, кажется, разбивает изображение, переворачивает его, выглядит как дерьмо, вычерчивает границы или просто не работает правильно.
источник
Ответы:
Мне нужно то же самое - в моем случае, чтобы выбрать размер, который подходит после масштабирования, а затем обрезать каждый конец, чтобы подогнать остальные к ширине. (Я работаю в альбомной ориентации, поэтому, возможно, не заметил каких-либо недостатков в портретном режиме.) Вот мой код - это часть категории UIImage. Размер цели в моем коде всегда установлен на полный размер экрана устройства.
источник
Более старая запись содержит код для метода изменения размера вашего UIImage. Соответствующая часть выглядит следующим образом:
Что касается обрезки, я считаю, что если вы измените метод для использования другого размера для масштабирования, чем для контекста, ваше получающееся изображение должно быть обрезано до границ контекста.
источник
originalImage
. Спасибо.UIGraphicsBeginImageContextWithOptions(newSize, 1.0f, 0.0f);
. (поясняется здесь: stackoverflow.com/questions/4334233/… )Я предлагаю это. Разве она не красавица? ;)
источник
Есть большой кусок кода, связанный с изменением размера изображений + несколько других операций. Я пришел к этому, когда пытался понять, как изменить размеры изображений ... http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
источник
Ну вот. Этот идеален ;-)
РЕДАКТИРОВАТЬ: см. Ниже комментарий - «Не работает с определенными изображениями, происходит сбой с: CGContextSetInterpolationQuality: неверный контекст 0x0 ошибка»
источник
Это версия ответа Джейн Сэйлз в Swift. Ура!
источник
Я изменил код Брэда Ларсона. Он будет заполнять изображение в заданном прямоугольнике.
источник
Xamarin.iOS версия для принятого ответа о том, как изменить размер и затем обрезать UIImage (Aspect Fill) ниже
источник
Я преобразовал руководство Сэма Вирча в swift, и оно хорошо сработало для меня, хотя в последнем изображении есть небольшое «сжатие», которое я не смог разрешить.
Если кому-то нужна объективная версия c, она есть на его сайте.
источник
Я обнаружил, что Swift 3, опубликованный Евгением Канвецом, неравномерно масштабирует изображение.
Вот моя версия функции Swift 4, которая не сжимает изображение:
источник
UIGraphicsBeginImageContextWithOptions
но другие работали отлично. Спасибо!Следующий простой код работал для меня.
источник
UIImageView
объектов. Однако этот вопрос касается масштабирования самогоUIImage
объекта.тогда вы можете сделать снимки экрана с этим
источник
Ниже приведен пример работы: Левое изображение - (исходное изображение); Правильное изображение с масштабом х2
Если вы хотите масштабировать изображение, но сохранить его рамку (пропорции), вызовите метод следующим образом:
источник
Этот вопрос, кажется, был поставлен на покой, но в моем поиске решения, которое я мог бы более легко понять (и написанного на Swift), я пришел к этому (также опубликованному по адресу: Как обрезать UIImage? )
Я хотел быть в состоянии обрезать из области, основанной на соотношении сторон, и масштабировать до размера, основанного на внешнем ограничивающем экстенте. Вот мой вариант:
Есть несколько вещей, которые я нахожу запутанными, отдельные проблемы обрезки и изменения размера. Обрезка обрабатывается с помощью источника прямоугольника, который вы передаете drawInRect, а масштабирование обрабатывается частью размера. В моем случае мне нужно было связать размер прямоугольника обрезки на источнике с моим выходным прямоугольником с тем же соотношением сторон. Затем масштабный коэффициент выводится / вводится, и его необходимо применить к drawRect (передается в drawInRect).
Одно предостережение заключается в том, что этот подход предполагает, что изображение, которое вы рисуете, больше контекста изображения. Я не проверял это, но я думаю, что вы можете использовать этот код для обработки кадрирования / масштабирования, но явно указав параметр масштаба как вышеупомянутый параметр масштаба. По умолчанию UIKit применяет множитель в зависимости от разрешения экрана.
Наконец, следует отметить, что этот подход UIKit является более высоким уровнем, чем подходы CoreGraphics / Quartz и Core Image, и, похоже, решает проблемы ориентации изображения. Стоит также упомянуть, что это довольно быстро, второй после ImageIO, согласно этому посту здесь: http://nshipster.com/image-resizing/
источник
Swift версия:
источник
Вот Swift 3 версия руководства Сэма Уирча по Swift, опубликованная Уильямом Т.
источник