【问题标题】:Imagick annotateImage: how to set text position from the top leftImagick annotateImage:如何从左上角设置文本位置
【发布时间】:2016-01-24 00:45:53
【问题描述】:

我正在尝试围绕annotateImage 创建一个包装函数,以便能够设置给定文本的确切顶部和左侧位置。默认方法从基线设置 y 位置,这意味着如果要在图像上的确切位置绘制文本,则必须进行大量实验。这就是我的意思...

$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');

在上面的代码中,文本是不可见的,因为 y 位置是 0。所以为了解决这个问题,我从以下函数开始,我在 y 上添加了 40 的偏移量...

function addText($image, $draw, $x, $y, $text) {
  $y = $y + 40;
  $image->annotateImage($draw, $x, $y, 0, $text);
}

addText($image, $draw, 0, 0, 'The quick brown fox'); // draw at 0, 0

但它不是很可靠,因为它没有考虑字体大小等任何因素......

实现这一目标的最佳方法是什么?

【问题讨论】:

  • 您可以尝试使用 setPointSize 来设置特定的字体大小,或者使用 getFontSize 来获取大小并以此为基础。我没试过,但你可能需要计算点到像素。

标签: php text position imagick


【解决方案1】:

我找到了一个行之有效的解决方案。如果重力设置为“NorthWest”,则文本倾向于从左上角保持其 x y 位置。

$draw->setGravity(Imagick::GRAVITY_NORTHWEST);
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');

【讨论】:

  • 像魅力一样工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多