Как добавить обводку только к некоторым символам в строке, используя PHP ImageMagick?

Скажем, у меня есть следующий код:

$draw = new ImagickDraw(); // prep text
$draw->setFillColor('#00ff00');
$draw->setFontSize(12);
$draw->setStrokeWidth(4);
$draw->setStrokeColor(new ImagickPixel('#ff0000'));
// etc.

$image = new Imagick(); // prep image
// etc.

// add text to image
$image->annotateImage($draw, 10, 10, 0, 'Hello, World!');

И давайте предположим, что это работает (что делает - я только что сократил это здесь). Есть ли простой способ для меня, скажем, изменить ширину обводки для каждого символа?

Я пытаюсь использовать что-то вроде $image->queryFontMetrics($text, 'H')) но задавался вопросом, был ли более простой способ.

Спасибо!

1 ответ

$draw = new ImagickDraw(); // prep text
$draw->setFillColor('#00ff00');
$draw->setFontSize(12);
$draw->setStrokeColor(new ImagickPixel('#ff0000'));
// etc.

$image = new Imagick(); // prep image
// etc.

// add text to image
$draw->setStrokeWidth(4);
$image->annotateImage($draw, 10, 10, 0, 'He');
$draw->setStrokeWidth(5);
$image->annotateImage($draw, 12, 10, 0, 'llo, ');
$draw->setStrokeWidth(6);
$image->annotateImage($draw, 15, 10, 0, 'Wor');
$draw->setStrokeWidth(7);
$image->annotateImage($draw, 18, 10, 0, 'ld!');

Будет ли что-то подобное работать или это будет слишком неуклюже? Это может сработать, если строка всегда будет одинаковой, и вы выясните, какие размеры $x были правильными (2-й параметр в функции annotateImage())

Другие вопросы по тегам