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.png 和 slide-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 <$@
我使用此代码从 .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.png 和 slide-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 <$@