我刚刚开始学习PHP的Imagick库,我需要在cyclinder周围扭曲图像。我一直在使用以下示例:
http://www.phpimagick.com/Imagick/rotateImage
成功旋转/缩放/范围等图像,但看不到如何将其包裹在圆柱体周围。
我可以看到有一种方法可以在文档中使用Cylindrical 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);
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(...);
...