如何使用ImageMagick旋转文本?

3
我有一张很长的图片源图片,我想在每个子图像上添加文字,但是当我尝试向书中添加文本时失败了,最终的图片和代码如下所示:

the final image

convert src.jpg -gravity north -pointsize 53 -fill white    -annotate +0+520   "I love you,don't leave me " -annotate +0+1146   "Do not be a programmer,ok?" -annotate +0+1772   "fuck u!" -annotate +0+3024  "too simple "  -draw 'translate 340,3340  rotate 21 text 0,0 "Javascript Action"'  final.jpg

有人能帮忙吗?谢谢。

当书名太长时,我想换行。 - lion c
1个回答

2

针对您的示例,您应该在Imagemagick中使用-annotate来进行所有文本位置和旋转,而不是仅在最后一个文本上使用-draw。这将避免您的最后一个文本超出图像范围。请尝试以下操作:

convert src.jpg -gravity north -pointsize 53 -fill white -annotate +0+520 "I love you,don't leave me " -annotate +0+1146 "Do not be a programmer,ok?" -annotate +0+1772 "xxxx x" -annotate +0+3024 "too simple " -gravity north -annotate 21x21+0+3340 "Javascript Action" final1.jpg


enter image description here

请参见 https://imagemagick.org/script/command-line-options.php#annotate

请勿在示例中使用粗俗用语。

如果您想要文字环绕,请使用caption:为每个文本创建一个新的具有透明背景的图像。然后将新的文本图像合成到所需位置的背景图像上。您可以通过-size Wx参数来控制换行的时间。这里我使用了您的图像的完整宽度,即-size 1000x。

convert src.jpg \
-pointsize 53 -background none -fill white -size 1000x \
\( -gravity center caption:"I love you,don't leave me" \) -gravity north -geometry +0+420 -compose over -composite \
\( -gravity center caption:"Do not be a programmer,ok?" \) -gravity north -geometry +0+1046 -compose over -composite \
\( -gravity center caption:"xxxx x" \) -gravity north -geometry +0+1672 -compose over -composite \
\( -gravity center caption:"too simple" \) -gravity north -geometry +0+2924 -compose over -composite \
\( -gravity center caption:"Javascript Action" -rotate 21 \) -gravity north -geometry +0+3240 -compose over -composite \
final2.jpg


enter image description here

或者为了让文本在图片宽度之前换行,我设置了-size 500x

convert src.jpg \
-pointsize 53 -background none -fill white -size 500x \
\( -gravity center caption:"I love you,don't leave me" \) -gravity north -geometry +0+420 -compose over -composite \
\( -gravity center caption:"Do not be a programmer,ok?" \) -gravity north -geometry +0+1046 -compose over -composite \
\( -gravity center caption:"xxxx x" \) -gravity north -geometry +0+1672 -compose over -composite \
\( -gravity center caption:"too simple" \) -gravity north -geometry +0+2924 -compose over -composite \
\( -gravity center caption:"Javascript Action" -rotate 21 \) -gravity north -geometry +0+3240 -compose over -composite \
final3.jpg


enter image description here

请参考以下链接:

https://imagemagick.org/Usage/text/#caption https://imagemagick.org/Usage/layers/#convert

补充:

要模糊文本,只需在caption后面添加-blur参数。

convert src.jpg \
-pointsize 53 -background none -fill white -size 500x \
\( -gravity center caption:"I love you,don't leave me" -blur 0x3 \) -gravity north -geometry +0+420 -compose over -composite \
\( -gravity center caption:"Do not be a programmer,ok?" -blur 0x3 \) -gravity north -geometry +0+1046 -compose over -composite \
\( -gravity center caption:"xxxx x" -blur 0x3 \) -gravity north -geometry +0+1672 -compose over -composite \
\( -gravity center caption:"too simple" -blur 0x3 \) -gravity north -geometry +0+2924 -compose over -composite \
\( -gravity center caption:"Javascript Action" -blur 0x3 -rotate 21 \) -gravity north -geometry +0+3240 -compose over -composite \
final4.jpg


enter image description here


谢谢您的回答。现在它可以工作了。但是书名文本能否放置在书面的中心位置? - lion c
重力向北,无法将文本放置在书面中心。 - lion c
我尝试了这个命令:convert src.jpg -gravity north -pointsize 53 -font ./font/MSYHBD.TTC -fill white -annotate +0+520 "我爱你,别离开我" -annotate +0+1146 "不要当程序员,好吗?" -annotate +0+1772 "xxxx x" -annotate +0+3024 "太简单了" miff:-|convert - -gravity NorthWest -fill '#824a0f' -pointsize 50 -font ./font/MSYHBD.TTC ( -draw "translate 340,3340 rotate 22 text 0,0 'Javascript\n Action'" -blur 0X10 ) final.jpg。我想模糊文本,但是这会使整个图像变模糊,并且无法更改行。 - lion c
请参考我上面的回答中的“ADDITION”。不需要使用管道或者-draw。在这种情况下,您必须使用caption。 - fmw42
我没明白。是“21x21”让文本旋转的吗?是顺时针旋转21度吗?为什么要重复21?如果一开始就有“重力北”,为什么还要重复呢? - Rodrigo
-rotate 21 是导致旋转的原因。我没有看到任何 21x21(除非是在 -annotate 21x21 中,那么它会导致旋转)。当使用重心中心,然后是重力向北时,您必须不断重置重力,因为一旦使用它将保持不变,直到您改变它。 - fmw42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接