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

问题描述 投票:1回答:1

我正在尝试使用ImageMagick为图像添加文本。我看到使用draw,label,caption,annotate等的多个例子。上面有什么区别?我能够使用CLI测试上述命令的结果,但是在使用IM4java尝试使用java运行时遇到了麻烦。任何有关Java代码片段的帮助都会很有用。

text imagemagick imagemagick-convert caption annotate
1个回答
4
投票

这就是我对它的看法 - 它非常自以为是,欢迎其他人编辑和添加他们的见解。


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

© www.soinside.com 2019 - 2024. All rights reserved.