Ubuntu 使用ImageMagick从文本生成图像?

Ubuntu 使用ImageMagick从文本生成图像?,ubuntu,command-line,imagemagick,ubuntu-16.04,imagemagick-convert,Ubuntu,Command Line,Imagemagick,Ubuntu 16.04,Imagemagick Convert,我正在尝试使用ImageMagick创建3840 x 2160的缩略图 我需要的图像有一个黑色的背景和白色的文字。文本应垂直和水平居中 我希望能够设置字体大小,但如果文本会延伸到图像之外,则会自动减小字体大小,使其适合左右两侧的填充量 我将用数十万张图片批量完成这项工作。根据我所能找到的,看起来你总是需要设置字体大小,而没有办法使其动态化 有人能确认这是否可行吗?您可以设置一个大小,指定文本的可用空间大小,并且ImageMagick将选择适合的最大点大小文本: magick -gravity c

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

我需要的图像有一个黑色的背景和白色的文字。文本应垂直和水平居中

我希望能够设置字体大小,但如果文本会延伸到图像之外,则会自动减小字体大小,使其适合左右两侧的填充量

我将用数十万张图片批量完成这项工作。根据我所能找到的,看起来你总是需要设置字体大小,而没有办法使其动态化


有人能确认这是否可行吗?

您可以设置一个大小,指定文本的可用空间大小,并且ImageMagick将选择适合的最大点大小文本:

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


如果您想在文本周围留一个边距,可以设置文本的最大大小,然后使用
-extent
-增加画布的大小-我将用红色显示,这样您就可以看到
-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 
magick identify -format "%[caption:pointsize]\n" result.png
59


如果您想知道pointsizeImageMagick选择了什么,可以这样获得:

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 
magick identify -format "%[caption:pointsize]\n" result.png
59

您可以设置指定文本可用空间大小的大小,ImageMagick将选择适合以下内容的最大点大小文本:

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


如果您想在文本周围留一个边距,可以设置文本的最大大小,然后使用
-extent
-增加画布的大小-我将用红色显示,这样您就可以看到
-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 
magick identify -format "%[caption:pointsize]\n" result.png
59


如果您想知道pointsizeImageMagick选择了什么,可以这样获得:

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 
magick identify -format "%[caption:pointsize]\n" result.png
59

如果您使用的是macOS或Linux,那么使用GNU并行处理可以非常快地处理100000个映像。如果你对此感兴趣,请打电话给我。如果你在macOS或Linux上,你可以用GNU Parallel非常快地完成100000个图像。如果你对此感兴趣,请告诉我。