2016-01-25 13 views
0

Я только начинаю изучать библиотеку PHP Imagick, и мне нужно деформировать изображение вокруг велосипедиста. Я я использую следующие примеры:PHP Imagick - Warp Изображение вокруг цилиндра

http://www.phpimagick.com/Imagick/rotateImage

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

Я могу видеть, что есть способ сделать это с Cylindrical Displacement в docs:

convert rose: -background black -gravity south -splice 0x8 \ 
     \(+clone -sparse-color barycentric '0,0 black 69,0 white' \) \ 
     \(+clone -function arcsin 0.5 \) \ 
     \(-clone 1 -level 25%,75% \ 
      -function polynomial -4,4,0 -gamma 2 \ 
      +level 50%,0 \) \ 
     -delete 1 -swap 0,1 miff:- |\ 
composite - -virtual-pixel black -displace 17x7 rose_cylinder.png 

Это просто не имеет смысла для меня, если я уже использую такой код:

$img = new Imagick($the_img_path); 
// to resize 
$img->resizeImage($_w, $_h, imagick::FILTER_LANCZOS, 1, false); 
// to crop 
$img->cropImage($crop_w, $crop_h, $crop_x, $crop_y); 

ответ

0

PHP Imagick предоставляет в основном все функции от консоли. Вы только найти соответствующие аналоги из списка функций:

http://php.net/manual/en/book.imagick.php

Так sparse вы должны использовать Imagick::sparseColorImage. Чтобы применить функцию: Imagick::functionImage. И так далее.

Вы код будет выглядеть следующим образом:

$original = new Imagick('rose'); 
$original->setBackgroundColor('black'); 
$original->setGravity('south') 
$original->spliceImage(...); 

$clone = clone $original; 
$clone->functionImage(...); 

... 
+0

Так что я место 'новообращенный роза: -назад ....' внутри functionImage(), так что это будет: '$ img-> functionImage (конвертировать розу : -back ....); '? –

+0

Нет. Каждый аргумент в команде примера - это операция, которая будет выполняться с исходным изображением: - черный черный // setBackground -gravity south // setGravity Затем у вас есть операции, сгруппированные в скобки. Каждая группа звезд с клоном, поэтому работает копируемый источник – Ostin