Изгиб изображения с помощью PHP или HTML5

Я ищу для достижения:

преобразование прямоугольного изображения в изогнутую дугу

http://i53.tinypic.com/2gule04.jpg

Я попробовал ответы, упомянутые в Curving, изображение, которое начинается как прямоугольник (загружается пользователем), предпочтительно используя Canvas или JS

Основываясь на ответах, я попытался преобразовать пиксельные мудры, которые не сработали. Чтобы понять подход на основе сетки, вам понадобится набор навыков разработчика 3d-2d, которого у меня нет.

Я разработчик PHP, и я ищу ответ в PHP или HTML5. Я пробовал множество вещей, начиная с холста HTML5 и разбивая изображение на более мелкие части, а затем присоединяюсь к ним, но они, похоже, не работают.

Будет приветствоваться помощь в правильном направлении.

Если вы можете использовать ImageMagick , примеры Circular и Radial Distortion Methods должны быть довольно близкими.

введите описание изображения здесь

Я не знаю, поддерживает ли это расширение PHP ImageMagick (в отличие от вызова ImageMagick из командной строки), но может.

Чтобы добиться аналогичного эффекта, вы хотите попробовать сопоставление текстур, и вам нужны некоторые 2d-3d подразделения и математические навыки. В основном идея состоит в том, чтобы разделить текстуру в треугольниках и сопоставить их с координатой 2d с использованием матрицы преобразования. Сначала проще начать с прямоугольников, а затем использовать изогнутую форму, но я тоже новичок в этом, поэтому я не знаю, действительно ли текстурное сопоставление вообще используется для кривой изображения. Вот пример простого сопоставления текстур: манипуляция изображениями и отображение текстур с использованием холста HTML5? ,

В вышеупомянутой ссылке есть эта подфункция:

n the following code I assume you have a picture object texture and 4 corners each of which is an object with fields x,y,u,v where x,y are pixel coordinates on the target canvas and u,v are pixel coordinates on texture: 

IMO – это информация, достаточная для начала сопоставления текстур.

Положительность заключается в использовании ротоскопической анимации вместо математического твинирования. Другими словами, вы можете добиться такого преобразования с помощью 5 или 6 (или столько, сколько хотите) кадров, которые последовательно рисуются на холсте HTML5 с нужной частотой кадров.

Вы можете легко рисовать каждый кадр с помощью Canvas native API. В вашем случае вам просто нужно нарисовать текст, а затем закрыть путь, как:

 ctx.beginPath(); ctx.moveTo(...); ctx.arc(...); ctx.lineTo(...); ctx.arc(...); ctx.lineTo(...); ctx.closePath(); 

и просто отрегулируйте соответствующие значения для каждого кадра.

Это должно быть довольно легко!