Я пытаюсь создать функцию обертки вокруг 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
Но это не очень надежно, поскольку не учитывает такие факторы, как размер шрифта и т. Д.
Какой лучший способ достичь этого?
Я нашел решение, которое хорошо работает. Если сила тяжести установлена на «Северо-запад», текст стремится сохранить свою позицию x y в верхнем левом углу.
$draw->setGravity(Imagick::GRAVITY_NORTHWEST);
$image->annotateImage($draw, 0, 0, 0, 'The quick brown fox');
Других решений пока нет …