使用 ImageMagick 从文本生成图像?

Use ImageMagick to Generate Image from Text?

我正在尝试使用 ImageMagick 创建 3840 x 2160 的缩略图。

我需要图片为黑底白字。文本应垂直和水平居中。

我希望能够设置字体大小,但如果文本会超出图像,自动减小字体大小以适应左右两侧的填充量。

我将批量处理数十万张图片。据我所知,您似乎总是必须设置字体大小,但无法使其动态化。

谁能确认这是否可行?

您可以设置一个大小,指定 space 可用于您的文本的大小,ImageMagick 将选择适合的最大磅值文本:

magick -gravity center -background black -fill white -size 400x300 -font /System/Library/Fonts/MarkerFelt.ttc    caption:"Short Text" short.png

magick -gravity center -background black -fill white -size 400x300 -font /System/Library/Fonts/MarkerFelt.ttc    caption:"Somewhat longer text that will get rendered in a smaller font" long.png


如果你想要文本周围的边距,你可以为文本设置一个最大尺寸,然后用 -extent 增加 canvas 的尺寸 - 我会用红色来做你可以看到 -extent 添加了什么:

magick -gravity center -background black -fill white -size 400x300 -font /System/Library/Fonts/MarkerFelt.ttc    caption:"Somewhat longer text" -background red -extent 410x400 long.png


如果您要从文件中读取行以生成成百上千张图像,您可以像这样从另一个命令通过管道输入文本:

echo -n "Text supplied by other command" | magick -gravity center -background black -fill white -size 400x300 -font /System/Library/Fonts/MarkerFelt.ttc caption:@- result.png 


如果你想知道点数 ImageMagick 选择了什么,你可以这样得到:

magick identify -format "%[caption:pointsize]\n" result.png
59