Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Imagick';fxImage根本不工作_Php_Imagemagick_Imagick_Imagemagick Convert - Fatal编程技术网

PHP Imagick';fxImage根本不工作

PHP Imagick';fxImage根本不工作,php,imagemagick,imagick,imagemagick-convert,Php,Imagemagick,Imagick,Imagemagick Convert,我有一个简单的convert的imagemagicks命令行,我想用PHP的Imagick类来模拟它: convert\(“image1.jpg”\)\ \(-尺寸1x256渐变:黑白\ -旋转90度\ -fx“地板(u*10+0.5)/10”\ \) \ “temp1.jpg”` 该行输出两个图像:temp1-0.jpg,它只是image1.jpg和temp1-1.jpg的一个副本,即: 正如你所看到的,这是一个简单的渐变图像,其效果使渐变变得不那么平滑。这与命令行imagemagick完美

我有一个简单的convert的imagemagicks命令行,我想用PHP的Imagick类来模拟它:

convert\(“image1.jpg”\)\
\(-尺寸1x256渐变:黑白\
-旋转90度\
-fx“地板(u*10+0.5)/10”\
\) \
“temp1.jpg”`
该行输出两个图像:
temp1-0.jpg
,它只是
image1.jpg
temp1-1.jpg
的一个副本,即: 正如你所看到的,这是一个简单的渐变图像,其效果使渐变变得不那么平滑。这与命令行imagemagick完美配合

虽然当我尝试用PHP模仿这一行时,它做的一切都是正确的,除了
-fx
部分。代码如下:

$canvas=new Imagick();
$canvas->newImage(1256,“白色”,“jpg”);
$gradient=新的Imagick();
$gradient->newPseudoImage(1256,“渐变:黑白”);
$canvas->compositeImage($gradient,imagick::COMPOSITE_OVER,0,0);
$canvas->rotateImage(新的ImagickPixel(),90);
$canvas->fxImage(“地板(s*10+0.5)/10”);
标题(“内容类型:图像/jpg”);
echo$canvas;
就像我说的,它不会复制
fx
部分,而是一个正常的黑白渐变

我不熟悉Imagemagick,但我尝试用该函数
u+10
应用一种更简单的效果,但效果仍然看不到。 我是否缺少使
fxImage()
正常工作的功能?
这样的效果有解决办法吗?

看起来这是Imagick库中的一个bug-图像实际上是可用的,但作为函数的返回值

$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);
$fxImage = $canvas->fxImage("floor(s*10+0.5)/10");

$fxImage->setImageFormat('jpg');
header( "Content-Type: image/jpg" );
echo $fxImage;
生成具有阶梯渐变的图像


我在Imagick github页面上对此提出了一个问题。

我没有使用Imagick中的特定函数,但我想指出的是,如果您真的无法通过PHP Imagick扩展实现这一点,您可以使用exec调用您在PHP中提出的命令行版本。哦,忘了说我在一个不允许exec()的转售服务器上工作,因此是Imagick类。我记得在一个旧的PHP错误跟踪页面上读到了关于fxImage()的行为,幸运的是当时我有了一个替代方法来恢复这种效果。无论如何,这就是fxImage的工作方式,我接受它的答案(因为我现在正以这种方式使用它)。关于您的示例,有一点是:您应该回显
$fxImage
(或者在
$canvas
上组合
$fxImage
)以正确显示它。非常感谢。