这里提供了使用ImageMagick命令行的答案,使用
convert
。如果您想在Rmagick中使用此方法,您需要自行移植。
文本框的大小。当您使用-size NxM caption:"some text"
时,文本将自动适应大小为NxM
的框。
文本框的基本位置。您可以使用带参数的-gravity
。可能的基本参数有:None、Center、East、Forget、NorthEast、North、NorthWest、SouthEast、South、SouthWest、West。
这些基本的-gravity
操作符将文本框放置在其“口语”名称所示的明显位置。
更精细的位置设置。但是,您还可以使用-geometry +X+Y
来通过像素数将确切位置移动(+X
向右移动X个像素,-X
向左移动;+Y
向上推Y个像素,-Y
向下推)。
让我们使用270像素宽和70像素高的框。这是我使用的命令,首先是短文本:
mytext="Cheers\!"
convert \
-background '#0008' \
-gravity center \
-fill white \
-size 260x70 caption:"${mytext}" \
funny-santa.jpg \
+swap \
-gravity south \
-composite \
funny-santa---1.jpg
以下是结果(原始图像在顶部,带有文本的图像在底部):
![](https://istack.dev59.com/1433l.webp)
如果您想将更长的文本放入同一框中,请使用更长的文本:-)
看这里:
mytext="Dear Kids\! One day you'll learn everything about Santa Claus. On that day, please also remember what they told you about Jesus."
convert \
-background '#0008' \
-gravity center \
-fill white \
-size 260x70 caption:"${mytext}" \
funny-santa.jpg \
+swap \
-gravity south \
-composite \
funny-santa---2.jpg
![](https://istack.dev59.com/64fgD.webp)
现在将文本框向右移动60像素,向上移动30像素:
mytext="Dear Kids\! Pushing text boxes around to place captions at precise locations inside an image is easy."
convert \
-background '#0008' \
-gravity center \
-geometry +60+30 \
-fill white \
-size 260x70 caption:"${mytext}" \
funny-santa.jpg \
+swap \
-gravity south \
-composite \
teaching-santa.jpg
![](https://istack.dev59.com/FBJzM.webp)
composite
可以更容易地精确定位到另一张图像顶部。 - Daniel Bonnell