【问题标题】:Set imagemagick text to middle将 imagemagick 文本设置为中间
【发布时间】:2018-01-19 23:12:24
【问题描述】:

我正在使用 imagemagick 在图像上放置一些文本,但我正在努力寻找一种方法来动态地将文本 bang 放在框的中间。

对于奖励积分,是否还有一种方法可以使用第二个命令将其偏移,即在中心右侧轻推 50 像素。这是因为通常我希望文本在中间,除非他们添加图片,然后我也需要为图片腾出空间。

文本和字体大小是可变的,但仍需要居中。

这是我当前的代码:

<?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,但必须计算大小然后以这种方式居中似乎有点啰嗦。

【问题讨论】:

  • setGravity(Imagick::GRAVITY_CENTER) 怎么样
  • @Bonzo 嗨。我试过了,但它似乎没有用:(

标签: php imagemagick image-manipulation


【解决方案1】:

这对我来说很好用:

#!/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');
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 2011-05-10
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2013-10-27
    • 2010-12-12
    相关资源
    最近更新 更多