ImageMagick从中心偏移文本

时间:2017-02-25 13:42:21

标签: php imagemagick

我正在尝试在生成的图像上包含条件偏移到文本的重心。我做了一些阅读,显然我可以使用

以下是代码:

<?php

function process($inputdata)
{
$width = 400;
$height = 300;

$textBackground = new ImagickPixel('transparent');
$textColor = new ImagickPixel('#FFF');

$gradient = new Imagick();
//gradient:angle=angle in degrees
$gradient->newPseudoImage($width, $height, 'gradient:#3a7bd5-#3a6073');

$image = new Imagick();
$image->newImage($width, $height, $textBackground);

$gradient->setImageColorspace($image->getImageColorspace());

$draw = new ImagickDraw();
$draw->setFillColor($textColor);
$draw->setFontSize( 25 );
$draw->setGravity(Imagick::GRAVITY_CENTER );
//$draw->setGeometry(Imagick::Geometry +20 +20); --New code that doesn't work

$image->annotateImage($draw, 0, 0, 0, $inputdata); 

$gradient->compositeImage($image, Imagick::COMPOSITE_OVER, 0, 0);
$gradient->setImageFormat('png');

header('Content-type: image/png');
echo $gradient;
return;
}
?>

这是我尝试使用的代码:

$draw->setGravity(Imagick::GRAVITY_CENTER );
$draw->setGeometry(Imagick::Geometry +20 +20);

理论上应该从重力中心偏移文本,但是当我尝试它时会停止生成图像。我想我犯了一个错误,因为我能找到的唯一示例代码是命令行,而不是PHP接口。

1 个答案:

答案 0 :(得分:1)

没有与-geometry相当的东西。您可以使用compositeImage中的偏移来移动图像。但你需要先设定重力。