Imagemagick 转换:使用 Pango 格式化自动生成的幻灯片中的标题

Imagemagick convert: use Pango to format captions in auto generated slides

我使用此代码从 .txt 文件自动生成幻灯片,我在其中以这种方式编写字幕:

CAPTION 1

CAPTION 2

...

标题 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

它会在 /slides 中生成我的幻灯片。

现在我想在我的幻灯片中使用一些格式代码,比如

MY <b>CAPTION</b> 1

MY <i>CAPTION</i> 2

...

MY CAPTION N

但是我无法理解如何在我以前的代码中使用pango。我需要重新定位我的标题行居中,距底部 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

我得到:

如果我使用这条线:

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

我得到了两个文件(为什么?),其中第一个文件正确解析裁剪到文字大小:

第二个是背景。这样的文件名是 slide-0-0.pngslide-0-1.png

已解决:我需要将一张图片传送到另一张图片。

第一个包含格式化代码,第二个将管道数据覆盖到背景上。

#!/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 <$@