如何将ImageMagic shell命令转换为等效的PHP脚本?

时间:2018-01-27 11:46:37

标签: php imagemagick

我有以下shell脚本,我几乎逐字地从ImageMagick manual

复制
  convert input.jpg -background White -pointsize 32 label:'Hello world' +swap  -gravity Center -append output.jpg;

现在我想在共享的webhost上运行相同的操作(似乎没有convert命令可用)。从表面上看,从命令行到PHP的映射看起来相当简单,但不知何故并非如此。以下代码打印输入图像不变。

//header('Content-type: image/jpeg');

$image = new Imagick('input.jpg');

$image->setBackgroundColor("White");
$image->setPointSize(32);
$image->setGravity(imagick::GRAVITY_CENTER);
$image->labelImage("hello world");
echo $image->count(); // 1
echo $image->appendImages(True);
//echo $image;

labelImage函数的文档很少,而且似乎没有做太多的事情。此外,没有swap功能。

在图像上添加标题的等效PHP代码是什么?

[编辑]

似乎labelImage只设置了一个属性,就像commentImage一样(此时提供了示例)。有一个看起来很有希望的render命令,但是会出错:Fatal error: Call to undefined method Imagick::render()。奇...

1 个答案:

答案 0 :(得分:0)

我不了解标签,但使用splice链接文档的第二种方法确实可以很好地翻译:

$image = new Imagick("memes/$name.jpg");
$draw = new ImagickDraw();

$image->setBackgroundColor("White");
$image->spliceImage(0, 40, 0, 0);

$draw->setFillColor('black');
$draw->setFontSize( 28 );
$draw->setGravity(Imagick::GRAVITY_NORTH);
$image->annotateImage($draw, 10, 10, 0, $label);