我知道ImageMagick的annotate
命令可以在图像上叠加一些文本,但是它可以使用图像的文件名作为文本吗?我以为是这样,但似乎找不到直接的文档来证实这一点。
毫无疑问,某些参数组合可以解决此问题,或者在脚本中是否存在更好的方法?
最佳答案
埃里克·L(Eric L.)的回答是正确的-为此我+1! -但是-annotate
并不能给您太多控制文本的外观。
如果您要寻找美感,那就去找使用-composite
的东西。您可以使用IM命令先构造一个覆盖图像(使用半透明背景),然后将其覆盖在原始图像上。
这是一个使用-composite
而不是-annotate
的示例,该脚本使用脚本方法来处理当前目录中的每个PNG文件。这个甚至自动调整字体大小并将其调整为可用的“宽度* 90%”-这是一个Bash脚本(请参见Win等效注释):
for img in *.png; do
width=$(identify -format %W ${img})
width=$(( ${width} * 9 / 10 ))
convert \
-background '#0008' \
-gravity center \
-fill white \
-size ${width}x100 \
caption:"${img}" \
"${img}" \
+swap \
-gravity south \
-composite \
"with-caption-${img}"
done
一张原稿的示例插图及其相应的输出如下:
!
这是一个使用
-annotate
的命令,试图设置一些超出默认参数的内容:for img in so#12231624-right.png; do
convert \
"${img}" \
-fill red \
-undercolor '#0008' \
-pointsize 24 \
-gravity south \
-annotate +0+5 "${img}" \
"with-annotate-${img}"
done
关于image-processing - 使用ImageMagick(或类似格式)覆盖图像的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106200/