2016-01-25 36 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