【发布时间】:2014-07-02 17:59:32
【问题描述】:
我有一个简单的 convert 的 imagemagicks 命令行,我想用 PHP 的 Imagick 类来模仿它:
convert \( "image1.jpg" \) \
\( -size 1x256 gradient:white-black \
-rotate 90 \
-fx "floor(u*10+0.5)/10" \
\) \
"temp1.jpg"`
该行输出 2 个图像:temp1-0.jpg 只是 image1.jpg 的副本,temp1-1.jpg 是这个:
如您所见,这是一个简单的渐变图像,其效果使渐变不那么平滑。这与命令行 imagemagick 完美配合。
虽然当我尝试用 PHP 模仿那行代码时,除了 -fx 部分之外,它所做的一切都是正确的。代码如下:
$canvas = new Imagick();
$canvas->newImage(1, 256, "white", "jpg");
$gradient = new Imagick();
$gradient->newPseudoImage(1, 256, "gradient:white-black");
$canvas->compositeImage( $gradient, imagick::COMPOSITE_OVER, 0, 0 );
$canvas->rotateImage(new ImagickPixel(), 90);
$canvas->fxImage("floor(s*10+0.5)/10");
header( "Content-Type: image/jpg" );
echo $canvas;
就像我说的,它不会重现 fx 部分,而是正常的白到黑渐变。
我是 Imagemagick 的新手,但我尝试使用该函数 u+10 应用更简单的效果,但仍然看不到效果。
我是否缺少使fxImage() 正常工作的东西?
有这样的效果的解决方法吗?
【问题讨论】:
-
我没有使用 imagick 的那个特定功能,但我想指出,如果你真的无法通过 PHP imagick 扩展找到任何方法,你可以调用命令行版本你在 PHP 中提出,使用 exec。 us3.php.net/function.exec
-
哦,忘了说我正在使用不允许 exec() 的转售服务器,因此是 Imagick 类。
标签: php imagemagick imagick imagemagick-convert