#php #imagemagick
#php #imagemagick
Вопрос:
Я пытаюсь изменить перспективу искажения Plane2Cylinder в ImageMagick с помощью PHP.
Чтобы помочь объяснить, что я ищу, я создал эту графику:
Вы можете видеть, что нижняя часть красного блока имеет больший радиус, чем верхняя часть, как если бы вы рассматривали это сверху по центру.
Я попробовал дополнительные поля center_x / y:
$label->distortImage(Imagick::DISTORTION_PLANE2CYLINDER, [28,0,100], true);
С различными настройками от 0 до 1000 для каждого x и y, с нулевыми результатами.
У кого-нибудь есть какие-либо идеи или подсказки? Я тщательно искал, но не могу найти ничего подходящего.
Комментарии:
1. Насколько я знаю, в функции ImageMagick plane2cylinder нет наклона. Смотрите imagemagick.org/Usage/mapping/#displace_cylinder где он использует полиномиальное уравнение, чтобы применить псевдотренажер к цилиндру. Вам пришлось бы использовать какой-то обратный этому.
2. @fmw42 Спасибо, я проверю это. (Да, я понимаю, что это было некоторое время назад)
3. Будет лучше, если вы предоставите большую часть своего кода — тогда больше людей попытаются помочь, теперь это только теория с одной строкой кода и одним изображением.
Ответ №1:
Я не нашел решения с помощью DISTORTION_PLANE2CYLINDER, но просто как идея, что жесткая перспектива может уменьшить силу различия и, возможно, стать также точкой для дальнейших искажений, например. Методы кругового и радиального искажения (Arc).
plus
convert img.png
-matte
-virtual-pixel transparent
-distort Perspective '200,0,0,0 100,700,100,700 700,700,700,700 600,0,800,0 '
img1.png
Может дать вам желаемый радиус сверху и снизу.
Комментарии:
1. Попробуйте plan2cylinder, затем создайте двоичную маску. Затем к результату от плоскости к цилиндру применить — исказить ствол. Затем примените к нему маску, чтобы обрезать любые горизонтальные смещения
2. Спасибо. Это не совсем то, что я искал, но я ценю идею!
Ответ №2:
Итак, после всей этой работы пытаюсь выяснить, как это сделать, используя маски, фильтры и т.д… решение было на самом деле очень простым.
В итоге я просто поместил основное изображение поверх более высокого прозрачного изображения (на правильном расстоянии сверху вниз для создания перспективы), а затем применил plane2cylindar ко всему этому изображению.
Настолько сумасшедший, что я не видел этого для начала. Спасибо за мысли и помощь.
Комментарии:
1. Как насчет публикации и ввода и вывода примера.