Imagemagick转换:使用Pango格式化自动生成的幻灯片中的标题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Imagemagick转换:使用Pango格式化自动生成的幻灯片中的标题相关的知识,希望对你有一定的参考价值。
我使用此代码从.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
它会在/幻灯片中生成我的幻灯片。
现在我想在我的幻灯片中使用一些格式代码,比如
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 <$@
以上是关于Imagemagick转换:使用Pango格式化自动生成的幻灯片中的标题的主要内容,如果未能解决你的问题,请参考以下文章
CENTOS 7+PHP7使用imagemagick 将webp格式图片转换为jpeg格式
开发利器_ImageMagick.基于Linux命令行的图片缩放/编辑/格式转换?
使用Sphinx ImageMagick扩展名sphinx.ext.imgconverter更改已转换图像的分辨率