Не удается вписать текст в изображение с помощью ImageMagick - PullRequest
1 голос
/ 04 марта 2020

Мне нужно подогнать текст под изображение. Мое изображение имеет разные размеры, поэтому я не могу установить постоянный размер точек.

Моя команда выглядит примерно так

convert 
    -fill white
    -font Winter Calligraphy
    -size `${options.width}x${options.height}`
    label: KJHGFD
    test.gif

на выходе вы можете увидеть обрезанную часть вверху изображения.

Вывод: output image

  • У меня проблема только с этими шрифтами, другие шрифты отлично работают.
  • Я пытался добавить белую рамку сверху , К сожалению, это только переместило поврежденный текст вниз.
  • Я не могу изменить размер области.
  • Текст должен заполнить как можно больше места.
  • Мне нужно использовать Шрифт Winter Calligraphy

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

Вот немного хитрый способ получить желаемый результат. Вот шаги:

  • Во-первых, используйте caption:, чтобы получить ImageMagick , чтобы сообщить вам размер точек, который он будет использовать, чтобы заполнить текстовое поле и извлечь эту информацию

  • Создайте холст в два раза шире и в два раза выше, чем тот, который вам действительно нужен, и нарисуйте текст посередине - он обязательно поместится!

  • Теперь обрежьте посторонний фон вокруг текста, чтобы у вас была ограничивающая рамка абсолютного минимума для текста

  • Измените размер результата до желаемого размера.


#!/bin/bash

# Width, height and text
w=600
h=150
text="KJHGFD"

# Get pointsize ImageMagick thinks is good
pointsize=$(convert -gravity center -background black -fill white -size ${w}x${h} \
    -font "Winter Calligraphy.ttf" caption:"$text" -format "%[caption:pointsize]" info:)

echo ImageMagick likes pointsize: $pointsize

# So draw text in that size on larger canvas, trim to bounds of letters and resize to desired size
wb=$((w*2))
hb=$((h*2))
convert -gravity center -fill white -size ${wb}x${hb} xc:black \
    -font "Winter Calligraphy.ttf" -pointsize $pointsize -annotate 0 "$text" \
    -trim +repage -resize ${w}x${h}\! result.png

enter image description here

2 голосов
/ 04 марта 2020

Это работает для меня в ImageMagick 6.9.10.97 Q16 Ma c OSX. Я добавил -background white -fill black -gravity center к вашей команде.

convert -background white -fill black -font "/library/fonts/Winter Calligraphy.ttf" -size 569x196 -gravity center label:KJHGFD test.gif


enter image description here

...