我正在寻找一个能够输出带有我输入的文本的图像的程序。有点像模板,我会输入不同的文本/数字和图像,程序将输出图像,其顶部的文本位于我指定的坐标中。我想批量做。我可以为此使用的最佳程序是什么?
答案1
命令convert
fromImageMagick
可以执行您想要的操作,让您指定字体大小、颜色以及文本的放置位置。
例如
convert -pointsize 20 -fill yellow -draw 'text 270,460 "My string" ' source.jpg results.jpg
答案2
ImageMagickconvert
是该领域的老牌企业。就我个人而言,我觉得它很糟糕,无论是在 CLI 的很多方面还是在速度方面。 (这并不一定会阻止您。)它也可能是在 Web 服务器上运行的最常被利用的软件之一。
gm
在我看来,GraphicsMagick 的功能要好得多,可以执行以下操作:
#!/usr/bin/zsh
export text="Liam likes birds"
for infile in bird*.jpg; do
gm convert \
-font helvetica \
-pointsize 48 \
-fill blue \
-draw "text 100,100 \"${text}\""
${infile} ${infile:r}-with-text.webp
done
(你会注意到 GraphicsMagick 显然是 ImageMagick 的一个分支。或者更确切地说,这两个软件都是从同一棵树上掉下来的,我认为GraphicsMagick 的落地没有那么不稳定;-P。尽管它不像 ImageMagick 那样被广泛利用,但您可能需要考虑在用户可以发送给您的图像上运行软件的风险(如果这是您的用例)。它的部署也不太广泛,因此它不太成为一个有吸引力的利用对象。)
如果您的问题更复杂,还有其他方法,例如使用 SVG 文件“模板”以及内部引用的图像文件(您的脚本可以替换该模板),然后使用例如rsvg-convert
.