0

我正在尝试通过 imagick php 扩展来扭曲透视图像,并且我有以下代码可以执行此操作:

    $controlPoints = array(
                    0,0, 0,0, 
                    0,$height, 0,$height, 
                    $width,0, $width,$perspective_wrap, 
                    $width,$height, $width,$hps
                    );
$im1->setImageMatte(true);
//Distort the image -- In perspective with the matrix given above
$im1->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);  



图像在 linux 服务器上的透视图失真,但是当我在 Windows 主机上移动脚本时,似乎发生以下错误:
致命错误:未捕获的异常 'ImagickException' 并带有消息 'Can't read argument array'

其中行是$ im1->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);

有没有办法让它在两个平台上都可以工作?

4

1 回答 1

0

似乎在我的 linux 服务器上我有以下 Imagick 版本:
ImageMagick 版本:ImageMagick 6.7.6-8 2012-05-02 Q16

和 Windows 服务器上:

ImageMagick 版本 ImageMagick 6.4.1 05/16/08 Q16


所以,在Windows 服务器 $controlPoints 数组必须将所有元素作为INT值。在 linux 服务器和该图像魔法版本上,如果某些值是字符串,则没有问题,因此问题的解决方案是将$controlPoints数组值转换为int值。

如果有人像我一样解决这个问题,希望它会有所帮助。

于 2012-06-21T17:50:39.827 回答