为什么此ImageMagick转换调用不会将居中文本添加到我的图像?

时间:2015-06-20 13:45:18

标签: imagemagick

我有一个脚本:

    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

我应该做些什么来让#34; Fr。"以我提供的字体大小为中心的大黑色字母?

谢谢,

2 个答案:

答案 0 :(得分:2)

问题是由label:创建自己的画布这一事实引起的。让我们从一个名为a.png

的绿色图像开始

enter image description here

现在,如果您尝试添加如下标签:

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

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

如果您告诉ImageMagick将这两幅画布并排放在这样的单张图片中,您将会看到您创建的内容

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

enter image description here

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

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

enter image description here

答案 1 :(得分:0)

如果我使用等效的:

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