Imagick annotateImage:如何从左上角设置文本位置
Imagick annotateImage: how to set text position from the top left
我正在尝试围绕 annotateImage
创建一个包装函数,以便能够设置给定文本的确切顶部和左侧位置。默认方法设置相对于基线的 y 位置,这意味着如果想要在图像上的确切位置绘制文本,则必须进行大量实验。这就是我的意思...
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');
在上面的代码中,文本是不可见的,因为 y 位置为 0。因此,为了解决这个问题,我从以下函数开始,在其中我将 40 的偏移量添加到 y...
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
但它不是很可靠,因为它没有考虑字体大小等任何因素...
实现此目标的最佳方法是什么?
我找到了一个行之有效的解决方案。如果重力设置为 'NorthWest',文本倾向于保持其从左上角开始的 x y 位置。
$draw->setGravity(Imagick::GRAVITY_NORTHWEST);
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');
我正在尝试围绕 annotateImage
创建一个包装函数,以便能够设置给定文本的确切顶部和左侧位置。默认方法设置相对于基线的 y 位置,这意味着如果想要在图像上的确切位置绘制文本,则必须进行大量实验。这就是我的意思...
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');
在上面的代码中,文本是不可见的,因为 y 位置为 0。因此,为了解决这个问题,我从以下函数开始,在其中我将 40 的偏移量添加到 y...
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
但它不是很可靠,因为它没有考虑字体大小等任何因素...
实现此目标的最佳方法是什么?
我找到了一个行之有效的解决方案。如果重力设置为 'NorthWest',文本倾向于保持其从左上角开始的 x y 位置。
$draw->setGravity(Imagick::GRAVITY_NORTHWEST);
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');