使用 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
我正在尝试使用 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