向ImageMagick添加文本时标题,绘制,注释,标签之间的区别

时间:2019-04-02 07:52:08

标签: text imagemagick imagemagick-convert caption annotate

我正在尝试使用ImageMagick向图像添加文本。我看到了多个使用draw,label,caption,annotate等的示例。 两者之间有什么区别? 我可以使用CLI测试上述命令的结果,但是在尝试使用IM4java由java运行时遇到了麻烦。 有关Java代码段的任何帮助将非常有用。

1 个答案:

答案 0 :(得分:3)

这就是我的看法-这很自以为是,欢迎其他人来编辑和添加他们的见识。


label:像其他包含冒号(:)的运算符一样,例如gradient:xc:logo:label:运算符会生成自己的画布。这意味着您不必在现有图像上绘制/键入文本,而只需在文本上绘制/键入文本,它就会为该文本创建背景。

如果事先指定-size,它将创建一个大小合适的画布,并将文本放在适合的最大磅数上。因此,让我们尝试一个固定的宽尺寸:

convert -background black -fill white -gravity center -size 800x100 label:'Stack Overflow' text.png

enter image description here

还有固定的狭窄尺寸

convert -background black -fill white -gravity center -size 100x100 label:'Stack Overflow' text.png

enter image description here

如果您事先未指定-size,它将以您要求的磅值创建文本并将其放在适当大小的画布上。因此,让我们尝试一个没有画布大小的小磅值:

convert -background black -fill white -gravity center -pointsize 16 label:'Stack Overflow' text.png

enter image description here

还有一个没有画布大小的大磅字号:

convert -background black -fill white -gravity center -pointsize 64 label:'Stack Overflow' text.png

enter image description here

您还可以仅指定宽度,而不指定高度,例如-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

enter image description here


caption:类似于label:,但它也进行自动换行,因此它将一个长长的句子跨多行显示给您自己。


pango:是一种类似于HTML的相当复杂的标记语言,可让您在句子中期更改字体,颜色,粗体,斜体,下标,上标和其他文本功能。


-draw "text 10,10 'Your message'"在某种程度上已被弃用,但是它允许您在特定位置绘制现有图像,例如上面显示的10,10。请注意,它没有冒号(:),因此您需要已经有图像/画布才能插入。


-annotate确实取代了-draw。像-draw一样,您需要已经可以在其上绘制的画布/图像,但是与-draw相比,它允许您更轻松地定位,剪切和旋转文本。


安东尼·蒂森(Anthony Thyssen)对所有这些事情进行了精彩的讨论,更多内容here