У меня есть одноцветное изображение, и мне нужно изменить его размеры с разным масштабом. Желаемый результат показан на изображении. Я посмотрел на применение сетки сетки в opengles, но я не мог найти пример кода или более подробный учебник. Я также посмотрел imgwrap, но, насколько я вижу, для этой библиотеки требуется qt framework. Любые идеи, пример кода или ссылки для дальнейшего чтения будут оценены, спасибо. UIImage нелинейное изменение размера
ответ
Возможно, вы захотите попробовать this example с использованием тонких пластинчатых сплайнов и OpenCV.Это, на мой взгляд, самое простое решение, которое находится в сети.
Это выглядит потрясающе! Как я вижу, это просто простой способ создания изображения с сеткой или я ошибаюсь? Я уже реализовал GPUImageBulgeDistortionFilter, но это может быть полезно, если требования к изменению клиента. –
Он уверен, что это потрясающе. Ни одна из библиотек там не дает интерфейса так просто, как это. Если вам нужно больше настраиваемых искажений, чем у GPUImageBulgeDistortionFilter, это отличный вариант. – Totoro
Несколько идей:
- Копирование части UIImage в различный CGContext с использованием CGBitmapContextCreateImage(), скопируйте части вокруг, масштаб индивидуальны, положить вместе.
- Используйте эффекты CIFilter на частях вашего изображения, маскируя части, которые вы хотите масштабировать. (Core Image Programming Guide)
Любая идея, которая CIFilter выполнит эту работу? –
Да, это очевидный вопрос, у них гораздо больше вариантов, чем я когда-либо использовал. Если у вас есть доступ к этим образцам WWDC-лет, было хорошее демо-приложение, вы можете протестировать все фильтры (просто зайдите на портал разработчиков). Другой список находится здесь: http://developer.apple.com/library/ios/#documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html – Bersaelor
Я не уверен, но я полагаю, что если вы хотите сделать это виды работ, то вам нужно обрезать некоторую часть для изображения и применяют свою функцию изменения размера/функциональные возможности в этой croped части изображения и поместить в как он есть. Я просто даю свое мнение не уверен, что это верно для вас или нет.
Вот и я даю вам ссылку на вопрос, пожалуйста, прочитайте его, это может быть полезно в вашем случае:
Ответ MrTJ ближе к тому, что я думаю, что хочет OP. – nielsbot
Спасибо iPatel, я попробовал обрезать изображение и изменять размер отдельных частей, но проблема в этом подходе заключается в том, что когда изображение обрезается, а затем скомпоновано, будут появляться края, и изображение будет выглядеть непротиворечиво. –
Проблема вы столкнулись называется «образ перекос» в компьютерной графике. Сначала вы должны определить некоторые контрольные точки в исходном изображении и соответствующие точки в образце целевого изображения. Затем вам нужно вычислить плотное поле смещения (в этом приложении, называемом также оберточной сеткой), и просто применить это поле к исходному изображению.
Практически: лучшим вариантом для iOS будет создание 2D сетки вершин в OpenGL. Сопоставьте исходное изображение как текстуру над этой сеткой и деформируйте исходную сетку, вытеснив некоторые ее точки. Затем вы просто сделаете скриншот полученного изображения с помощью glReadPixels.
Я не знаю ни одного CIFilter, который бы реализовал отображение полей смещения такого типа.
UPDATE: Я нашел также пример кода, который использует 8 контрольных точек для преобразования изображений с помощью OpenCV. http://engineeering.blogspot.it/2008/07/image-morphing-with-opencv.html
OpenCV имеет рабочие порты для iOS, поэтому вы можете просто поэкспериментировать с кодом на ссылке выше и на целевом устройстве.
Поблагодарите MrTJ, ваш ответ, скорее всего, лучший способ сделать это, но сложнее и трудоемко. Я уже написал в вопросе, что я ищу более легкий подход. –
Не приходит в голову, что будет проще. Если вам нужен быстрый и практичный учебник по OpenGL, я бы порекомендовал http://iphonedevelopment.blogspot.it/2009/05/opengl-es-from-ground-up-table-of.html – MrTJ
Я нашел (и добавил) также реализация OpenCV для алгоритма, описанного выше. – MrTJ
Возможно, вы захотите посмотреть на шейдеры OpenGL. Что бы я сделал, я бы загрузил изображение в виде текстуры, применил фрагментарный шейдер (который представляет собой небольшую программу, которая позволит вам изменить искажение изображения), вернуть результаты текстуре и либо отобразить эту текстуру или сохранить его как растровое изображение.
Это не будет простым, но есть некоторые примеры кода для других искажений. Вот вихрь в шейдерах: http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/
Я не думаю, что есть простой способ сделать это без привлечения OpenGL, и вы, вероятно, не найдете отличной производительности для этого вне GPU.
Спасибо, Колин, это, наверное, самый мощный способ выполнить мое требование, но я спросил, что я ищу более легкий подход, чем OpenGL. –
Да, я это видел. Я просто не уверен, что для этого есть более легкий подход, чем OpenGL. Он может быть таким же легким, как он. :) –
Предлагаю вам ознакомиться с проектом GPUImage Брэда Ларсона на GitHub. Под Визуальные эффекты вы найдете фильтры, такие как GPUImageBulgeDistortionFilter
, которые вы сможете адаптировать под свои нужды.
Спасибо, это решение, которое я выбрал тем временем, и его работы довольно хорошо для моей проблемы. –
Отлично! Рад, что он работает на вас. –
- 1. Изменение размера UIImage
- 2. Изменение размера содержимого UIImage
- 3. Резьбовое изменение размера UIImage?
- 4. изменение размера uiimage перелистывает его?
- 5. Изменение размера UIImage инвертирует ориентацию
- 6. Изменение размера UIImage пропорционально урожая
- 7. Objective C - изменение размера UIImage
- 8. Изменение размера UIImage не работает
- 9. uiimage изменение размера по масштабному коэффициенту
- 10. Изменение размера таблицы TableView UIImage в iOS
- 11. Изменение размера UIImage до 100% и урожай
- 12. Изменение размера UIImage занимает много времени?
- 13. Изменение размера UIImage по ограничениям памяти
- 14. Перетаскивание/изменение размера UIImage на устройстве
- 15. Простое изменение размера UIImage в XCODE
- 16. Изменение размера UIImage/UIImageView без сохранения пропорций
- 17. Изменение размера UIImage для установки ширины устройства
- 18. UIImage + Изменение размера сбоев без предупреждения памяти
- 19. Изменение размера UIImage - Проблемы с производительностью
- 20. Изменение размера UIImage с жесткими краями
- 21. Изменение размера IOS UIImage не работает
- 22. UIImage изменение размера и качество выпуска
- 23. UIImage размера фактического размера
- 24. Изменение NSData Размер UIImage - сжатие и изменение размера UIImage с максимальным пределом Mb мегабайта
- 25. UIImage imageNamed размера
- 26. Создать UIImage определенного размера
- 27. Изменения размера UIImage
- 28. Изменение размера и местоположения UIImage в UIImageView (быстрое)
- 29. Изменение размера UIimages, снятого с камеры, также ROTATES UIimage?
- 30. Изменение размера UIImage при сохранении его формата (iOS)
Напоминает мне о эффектах раздувания и морщин в фотошопе. – William
Это выглядит полезным: http://stackoverflow.com/a/10230515/210171 – nielsbot