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

我明白了:

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

答案

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

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

#!/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命令行的图片缩放/编辑/格式转换?

ImageMagick 转换图片格式

使用Sphinx ImageMagick扩展名sphinx.ext.imgconverter更改已转换图像的分辨率

imagemagick 将 RGB PNG 转换为 CMYK PDF

如何在 Python 和 Gtk3 中使用 Pango.AttrType.FOREGROUND?