2016-01-25 62 views
0

我刚刚开始学习PHP的Imagick库,我需要在一个圆周上绕一个图像。我我一直在使用下面的例子:PHP Imagick - 围绕圆柱体的扭曲图像

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

要成功地旋转/标度/程度等的图像,但不能知道怎样才能把它包装轮的圆筒。

我可以看到有在docsCylindrical Displacement这样做的一种方式:

:这时候我一直在使用的代码,如只是没有多大意义,我

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主要提供了console util的所有功能。你刚才找到的功能列表相应的类似物:

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

那么我将'转换玫瑰:-back ....'里面functionImage(),所以它应该是:'img- $> functionImage(转换玫瑰:-back ....);'? –

+0

不是。 example命令中的每个参数都是一个将使用源图像执行的操作: -background black // setBackground -gravity south // setGravity 然后您将操作分组在括号中。每个组都有克隆,因此它操作复制源 – Ostin