为什么这个 ImageMagick 转换调用没有向我的图像添加居中文本?

Why is this ImageMagick convert call not adding centered text to my image?

我有,在脚本中:

    os.system('convert -font ' + os.path.join(os.path.dirname(__file__),
      'fr/Verdana.ttf') + ' -gravity Center -pointsize 100 label:"Fr."' +
      ' /tmp/fr/' + filename + ' /tmp/fr/' + filename)

这应该等同于:

convert -font /Users/jonathan/link/fr/Verdana.ttf -gravity Center -pointsize 100 label:"Fr." /tmp/fr/12345.png /tmp/fr/12345.png

但是图像上没有文字或其他可辨别的变化。

我也试过:

    os.system('convert -font ' + os.path.join(os.path.dirname(__file__),
      'fr/Verdana.ttf') + ' -gravity Center -pointsize 100 -annotate 0 "Fr."' +
      ' /tmp/fr/' + filename + ' /tmp/fr/' + filename)

这应该等同于:

convert -font /Users/jonathan/link/fr/Verdana.ttf -gravity Center -pointsize 100 -annotate 0 "Fr." /tmp/fr/12345.png /tmp/fr/12345.png

我应该怎么做才能让 "Fr." 以我提供的字体大小的大黑字居中?

谢谢,

如果我使用相当于:

,我可以获得所需的结果(到第二个文件)
convert /tmp/fr/12345.png -font /Users/jonathan/link/fr/Verdana.ttf -gravity Center -pointsize 100 label:"Fr." -composite /tmp/fr/12345.new.png

问题是由于 label: 创建了自己的 canvas。让我们从名为 a.png

的绿色图像开始

现在,如果您尝试添加这样的标签:

convert a.png -gravity Center -pointsize 100 label:"Fr." result.png

你会得到两个输出图像 - result-0.pngresult-1.png 因为,就 ImageMagick 而言,你说过你想要原始图像 (a.png) 和另一个块canvas 上面有一些字母,你没有说明你想把它放在哪里。

如果您告诉 ImageMagick 将这两个 canvas 像这样并排附加到一张图片中,您将看到您创建的内容

convert a.png -gravity Center -pointsize 100 label:"Fr." +append result.png

秘诀是合成标签在原始图像的顶部,同时确保标签的背景是透明的:

convert a.png -gravity Center -pointsize 100 -background none label:"Fr." -composite result.png