Image processing 覆盖图像';使用ImageMagick(或类似工具)的文件名
我知道ImageMagick的Image processing 覆盖图像';使用ImageMagick(或类似工具)的文件名,image-processing,imagemagick,filenames,Image Processing,Imagemagick,Filenames,我知道ImageMagick的annotate命令可以在图像上叠加一些文本,但是它可以使用图像的文件名作为文本吗?我会这么想,但似乎找不到直接的文档来证实这一点 毫无疑问,一些参数的组合可以管理这一点,或者在脚本中有更好的方法来实现这一点吗?这是一个非常古老的条目,但我每次搜索此主题时都会发现它,但它不起作用(至少对我来说)。这里有一些对我有用的东西: convert input.jpg -gravity South -annotate 0 '%f' output.jpg 希望这有助于某人…埃
annotate
命令可以在图像上叠加一些文本,但是它可以使用图像的文件名作为文本吗?我会这么想,但似乎找不到直接的文档来证实这一点
毫无疑问,一些参数的组合可以管理这一点,或者在脚本中有更好的方法来实现这一点吗?这是一个非常古老的条目,但我每次搜索此主题时都会发现它,但它不起作用(至少对我来说)。这里有一些对我有用的东西:
convert input.jpg -gravity South -annotate 0 '%f' output.jpg
希望这有助于某人…埃里克·L.的回答是正确的--+1来自我但是,
-annotate
并不能让您对文本的外观有太多的控制
如果你想要漂亮,那就选择使用-composite
的东西。可以使用IM命令首先构造覆盖图像(使用半透明背景),然后将其覆盖到原始图像上
下面是一个示例,如何使用-composite
而不是-annotate
,使用脚本化方法处理当前目录中的每个PNG文件。这个脚本甚至会自动调整字体大小,并将其调整到可用的“宽度*90%”中——这是一个Bash脚本(请参阅Win等效脚本的注释):
一份原件和相应输出的示例说明如下:
!
下面是一个使用-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
您还可以使用
mogrify
一次将文本添加到一组图像中
mogrify -gravity South -annotate 0 '%f' -pointsize 24 -fill white *.png
这将覆盖现有图像,因此请确保在执行此操作之前有备份。基于Steve Czetty的解决方案,您可以分别使用-pointsize和-fill设置批注的文本大小和颜色 下面是一个例子:
convert input.jpg -gravity south -pointsize 24 -fill yellow -annotate 0 '%f' output.jpg
显然,您可以根据自己的喜好将文本大小从24点更改为其他颜色,以及颜色从“黄色”更改为其他颜色。这是针对Bash的,是的。在Windows/DOS上,语法类似于(*.png)do convert中%i的
。
。这里没有最后的“完成”,在部分之后也没有分号。谢谢,我实际上解决了它,因为Git,我的windows中存在bash命令行。这对我来说很有效cd
放入图像文件夹(所有png都将被注释,因此进行备份),然后:mogrify-重力西南-注释+20+16'%t'-font-ArialUnicode-点大小24-填充'#ff0000'*。png
soutwest提供左下角位置+20+16
在距离X轴边缘20个像素、距离Y轴边缘16个像素的位置填充文本。至于字体,最后还有一个细节:'%t'
和'%f'
指定图像的文件名应用于注释文本<代码>'%t'
将省略文件扩展名,而'%f'
将包含它。(在Windows上,这些文件需要使用额外的%s进行转义,如:“%%t”
)如何在此处指定文件名的特定字符?假设我想添加文件名的前3个字符。操作系统“%f”{0:2}应该怎么做?我听说“%f”
是Mac版的,'%%f'
是Windows版的,所以可能这就是为什么它一开始对你不起作用的原因吧?你也可以使用-annotate来旋转文本。只需将0更改为15x15即可旋转15度。
convert input.jpg -gravity south -pointsize 24 -fill yellow -annotate 0 '%f' output.jpg