ImageMagick: как рисовать две строки с разным размером над изображением?

Я хочу нарисовать прямоугольник с двумя строками. Я хочу, чтобы первая строка была размером 15pt (ее число), во-вторых, размером 10pt (метка). Легко нарисовать одну строку с одним размером прямоугольника, я делаю это так:

$image = new Imagick('someimage.png'); $draw = new ImagickDraw; $draw->setGravity(Imagick::GRAVITY_CENTER); $draw->setfont(__DIR__ . DS . 'TREBUCBD.TTF'); $draw->setfontsize(15); $draw->annotation(0, 0, '50 points'); $image->drawImage($draw); 

Идея здесь состоит в том, чтобы «50» в «50 точках» были большими.

Я попытался сделать $ draw-> push (), чтобы вставить текущие настройки в стек, а затем установить размер шрифта и аннотацию снова, но затем две строки перекрываются. Я пытался это сделать часами. Любая помощь очень ценится!

Вышеупомянутая реализация находится в PHP, но, вероятно, мне удастся это сделать даже на примере, который показывает его с использованием командной строки ImageMagick.

edit: Я начал награду за награду за решение, реализованное на PHP.

Добавьте достаточно места перед «точками» и после «50», чтобы вы хорошо их выровняли:

 <?php $image = new Imagick('test.png'); $draw = new ImagickDraw; $draw->setGravity(Imagick::GRAVITY_CENTER); $draw->setfontsize(30); $draw->annotation(0, 0, '50 '); $image->drawImage($draw); $draw = new ImagickDraw; $draw->setGravity(Imagick::GRAVITY_CENTER); $draw->setfontsize(15); $draw->annotation(0, 0, ' points'); $image->drawImage($draw); file_put_contents('test.png', $image->getImageBlob()); ?> 

Вы можете использовать опцию + append, чтобы сделать две разные текстовые метки, объединенные горизонтально ( -append – vertically):

 convert -background grey -pointsize 15 -fill black label:abc \ -pointsize 10 -fill red label:cdefgh -gravity South +append test.png 

Этот код фактически создает два изображения, размер которых точно соответствует шрифту (поскольку он не указан явно), а затем эти два изображения по горизонтали прилагаются вместе:

введите описание изображения здесь

Еще раз: размер этого изображения рассчитывается автоматически, чтобы соответствовать вашим меткам. Для достижения этой цели вы можете использовать функции Imagick::labelImage и Imagick::appendImages . (Чтобы сделать изображение без фона, вы можете указать -backround transparent , например, через Imagick::setBackgroundColor )

После этого результирующее изображение с ярлыками может быть составлено с любым желаемым.