我正在尝试使用ImageMagick为图像添加文本。我看到使用draw,label,caption,annotate等的多个例子。上面有什么区别?我能够使用CLI测试上述命令的结果,但是在使用IM4java尝试使用java运行时遇到了麻烦。任何有关Java代码片段的帮助都会很有用。
这就是我对它的看法 - 它非常自以为是,欢迎其他人编辑和添加他们的见解。
label:
像其他包含冒号(:
)的运算符,例如gradient:
,xc:
,logo:
,label:
运算符生成自己的画布。这意味着您不会在现有图像上绘制/键入文本,而只需绘制/键入文本,然后为该文本创建背景。
如果您事先指定-size
,它将创建一个大小的画布,并将文本放在适合的最大点数上。所以,让我们尝试一个宽大的固定尺寸:
convert -background black -fill white -gravity center -size 800x100 label:'Stack Overflow' text.png
还有一个狭窄的固定尺寸:
convert -background black -fill white -gravity center -size 100x100 label:'Stack Overflow' text.png
如果您事先未指定-size
,它将以您要求的磅值创建文本并将其放在适当大小的画布上。所以,让我们尝试一个没有画布大小的小点数:
convert -background black -fill white -gravity center -pointsize 16 label:'Stack Overflow' text.png
还有一个没有画布尺寸的大磅尺寸:
convert -background black -fill white -gravity center -pointsize 64 label:'Stack Overflow' text.png
您也可以只指定宽度但不指定高度,例如与-size 200x
,或只是高度而不是宽度,例如-size x50
,它将使用它可以使用的最大字体,但会在您指定的维度中进行约束。
以下内容可以让您了解可以影响的文本属性:
convert -background black -fill yellow -strokewidth 2 -stroke magenta \
-undercolor blue -size 400x100 -gravity center -font 'AppleChancery' label:'Stack Overflow' text.png
caption:
就像label:
一样,但它也会自动换行,所以它会为你们所有人自己传播一个长句。
pango:
是一种类似于HTML的相当复杂的标记语言,允许您在句子中更改字体,颜色,粗体,斜体,下标,上标和其他文本功能。
-draw "text 10,10 'Your message'"
有点弃用,但它允许您在特定位置绘制现有图像,例如上面显示的10,10
。请注意,它没有冒号(:
),因此您需要已经有一个图像/画布供它绘制。
-annotate
真的取代了-draw
。像-draw
一样,你需要画一幅画布/图像,然后它可以让你比-draw
更容易定位,剪切和旋转你的文字。
Anthony Thyssen对所有这些事情进行了很好的讨论,还有更多的here。