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

时间:2018-09-11 07:40:33

标签: parsing imagemagick png pango captions

我使用以下代码从.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

它会在 / 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

我得到:

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 :(得分:1)

已解决:我需要将一个图像传输到另一个图像。

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


    axios.post('/user', {
        firstName: 'Fred',
        lastName: 'Flintstone'
    })
    .then(function (response) {
        console.log(response);
        fetchListStart();
    })
    .catch(function (error) {
        console.log(error);
    });