Imagemagick - 如何创建适合任何图像大小的注释?

Art*_*tem 0 bash imagemagick imagemagick-convert

我需要编写一个 bash 脚本,使用 imagemagick 注释给定的图像。问题是,该图像可以是任何大小,并且其注释在任何图像上看起来都应该几乎相同。

任何图像上的输出结果都应如下所示:

图像

所以我想弄清楚以下几点:

  1. 如何绘制一个带有文本的透明矩形,该矩形会根据图像大小调整其大小?
  2. 如何像示例中那样将该矩形放置在图像的底部?

Gee*_*ack 5

使用 ImageMagick 版本 6 或 7,您可以制作一个大小适合任何输入图像的标签,具有半透明背景,并将其合成在输入图像的底部以获得您所描述的结果。这是一个使用 IM 6 执行此操作的命令...

convert input.png -set option:size %[w]x \
   -fill white -background "#00000080" \
   \( label:"This is my text." \
      -virtual-pixel background -distort SRT "0.8 0" \
      -virtual-pixel none -distort SRT "0.8 0" \) \
   -gravity south -composite result.png
Run Code Online (Sandbox Code Playgroud)

它使用输入图像“%[w]”的宽度来设置标签的宽度。它将文本颜色设置为白色,背景设置为半透明黑色,“#00000080”。

在括号内它会创建您的标签。它使用“扭曲 SRT”将标签缩小一点,将其从边缘拉入。然后它会稍微缩小标签以在其周围添加一些透明空间。

创建标签后,它将重力设置为“南”并将标签合成到输入图像上。它通过写入输出文件来完成。

使用 IM 7,您需要将“convert”更改为“magick”。对于 Windows,将续行反斜杠“\”更改为插入符“^”,并删除转义括号的反斜杠。

编辑添加:通常您会在制作“标签:”之前使用“-size WxH”将其限制在特定尺寸内。我使用“-set option:size”代替,因为它允许在 IM 6 中使用百分比转义,如“%[w]”。这样标签尺寸是相对于任何输入图像宽度的。