将 imagemagick 文本设置为中间
Set imagemagick text to middle
我正在使用 imagemagick 在图像上放置一些文本,但我正在努力寻找一种方法将文本 bang 动态放置在框的中间。
对于奖励积分,是否还有一种方法可以用第二个命令抵消它,即将它向中心右侧微移 50 像素。这是因为通常我希望文字在中间,除非他们添加图片,然后我也需要为图片制作 space 。
文本和字体大小可变,但仍需要居中。
这是我当前的代码:
<?php
function process($inputdata)
{
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(400, 300, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );
/* Create text */
$image->annotateImage($draw, 10, 45, 0, $inputdata);
/* Give image a format */
$image->setImageFormat('png');
/* Output the image with headers */
header('Content-type: image/png');
echo $image;
return;
}
我尝试添加这条命令,但似乎没有任何效果:
$draw->setTextAlignment(\Imagick::ALIGN_CENTER);
我能找到的最接近的答案是 this one,但必须计算大小然后以这种方式居中似乎有点冗长。
这对我来说很好用:
#!/usr/local/bin/php -f
<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(400, 300, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFontSize( 30 );
$draw->setGravity(Imagick::GRAVITY_CENTER );
/* Create text */
$image->annotateImage($draw, 0, 0, 0, "Some funky text");
/* Give image a format */
$image->setImageFormat('png');
$image->writeImage('result.png');
?>
我正在使用 imagemagick 在图像上放置一些文本,但我正在努力寻找一种方法将文本 bang 动态放置在框的中间。
对于奖励积分,是否还有一种方法可以用第二个命令抵消它,即将它向中心右侧微移 50 像素。这是因为通常我希望文字在中间,除非他们添加图片,然后我也需要为图片制作 space 。
文本和字体大小可变,但仍需要居中。
这是我当前的代码:
<?php
function process($inputdata)
{
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(400, 300, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );
/* Create text */
$image->annotateImage($draw, 10, 45, 0, $inputdata);
/* Give image a format */
$image->setImageFormat('png');
/* Output the image with headers */
header('Content-type: image/png');
echo $image;
return;
}
我尝试添加这条命令,但似乎没有任何效果:
$draw->setTextAlignment(\Imagick::ALIGN_CENTER);
我能找到的最接近的答案是 this one,但必须计算大小然后以这种方式居中似乎有点冗长。
这对我来说很好用:
#!/usr/local/bin/php -f
<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(400, 300, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFontSize( 30 );
$draw->setGravity(Imagick::GRAVITY_CENTER );
/* Create text */
$image->annotateImage($draw, 0, 0, 0, "Some funky text");
/* Give image a format */
$image->setImageFormat('png');
$image->writeImage('result.png');
?>