Imagemagick convert: используйте Pango для форматирования подписей в автоматически сгенерированных слайдах - PullRequest
0 голосов
/ 11 сентября 2018

Я использую этот код для автоматического создания слайдов из файла .txt , где я написал подписи следующим образом:

CAPTION 1

CAPTION 2

...

CAPTION N

Это скриптЯ использую

#!/bin/bash
i=0
# loop through files
while IFS= read -r p;  do
  # if it's not an empty line
  if ! [ -z "$p"]; then
    # echo line
    echo "$p";
    convert -background none -font Trebuchet-MS -fill white -pointsize 60 -gravity center -draw  "text 0,300 'pango:$p'" slide_template.png slides/slide-$i.png
    i=$((i+1))
  fi;
# pass input
done <$@

slide_template.png просто пусто (прозрачный) 1920x1080 png .

Я прохожумой файл .txt следующим образом:

$ sh my_script.sh my_file.txt

И он генерирует мои слайды в / слайды .

Теперь я бы хотел использовать в моих слайдах какой-нибудь код формата , например

MY <b>CAPTION</b> 1

MY <i>CAPTION</i> 2

...

MY CAPTION N

Но Я не могу понять, как использовать панго вмой предыдущий код .Мне нужно изменить положение мою строку заголовка по центру, 300 пикселей снизу.

Если я использую:

convert -background none -font Trebuchet-MS -fill white -pointsize 60 -gravity center -draw  "text 0,300 '$p'" slide_template.png slides/slide-$i.png

Я получу:

correctly positioned but non parsed caption

Если я использую эту строку:

convert -background none -font Trebuchet-MS -fill white -pointsize 60 -gravity center pango:"$p" slide_template.png slides/slide-$i.png

Я получу ДВА файла (почему?),где первый правильно проанализирован , но обрезан до размера текста :

cropped caption

И второйодин фон.Таким образом, имена файлов: slide-0-0.png и slide-0-1.png

1 Ответ

0 голосов
/ 11 сентября 2018

Решено: мне нужно передать одно изображение другому.

Первый содержит отформатированный код, второй накладывает передаваемые данные на фон.

#!/bin/bash
i=0
# loop through files
while IFS= read -r p;  do
  # if it's not an empty line
  if ! [ -z "$p"]; then
    convert -background none -font Trebuchet-MS -fill white -pointsize 60 -gravity center -size 1920x300 pango:"$p" png:- | convert slide_template.png png:- -geometry +0+800 -composite  slides/slide-$i.png
    i=$((i+1))
  fi;
# pass input
done <$@
...