将可变宽度的标签附加到具有固定大小的标签

时间:2013-03-17 20:13:55

标签: imagemagick

我正在尝试使用Imagemagick命令创建单字母文本标签,给它一个阴影,将它放在固定大小的画布区域的左侧,然后将其附加到另一个固定高度的标签但是未知的宽度。因此,期望的结果是最终透明PNG左侧的单个字母,以及原点右侧约100px的另一个标签,例如,这个样机:

Mockup of desired output

我在以下命令中使用了所有这些,除了,阴影文本标签不在固定大小的框中(应该是100px×25px)。结果如下:

Actual result

认为我需要做的是以某种方式关闭-trim选项,但我不知道该怎么做。 + trim不是一个有效的选项,+ repage不会这样做。

convert \
\( -background transparent \
   \( -gravity west -fill lavender -font Constantia.ttf \
      -pointsize 12 label:'x' -trim \
      \( +clone -background black -shadow 100x3+0+0 -channel A -level 0,50% \
         +channel \) \
      +swap +repage -gravity center -composite \) \
-size 100x25 -gravity west \) \
   \( -size x25 -fill black -background transparent -font MyriadPro-Semibold.otf \
      -pointsize 15 label:'Long legend for x' -gravity west \) \
   +append -strip legend_test.png

(需要使用修剪选项才能将高度降低到25px - 否则阴影操作会产生太大的垂直延伸。编辑:我猜我上面的错误 - 甚至没有任何地方的-trim命令,我希望的固定大小的图像不起作用。)

1 个答案:

答案 0 :(得分:1)

嗯,看起来像ImageMagick的社区还没有离开这里。我发布到ImageMagick phpBB板,并能够把答案放在一起。简言之:

  • -trim选项不是影响调用后每个图像的选项。相反,它本质上是一个立即执行的命令。
  • -extent选项可用于将图像增大或减小到所需大小。显然,我在原始代码中使用的-size命令只能用于设置图像的初始大小,而不能用于更改已存在的图像的大小。

这是最后的工作命令:

convert \
\( -background transparent -extent 100x25 -gravity west \
   \( -fill lavender -font Constantia.ttf \
      -pointsize 12 label:'x'  -trim -extent 100x25 -gravity west \
      \( +clone -background black -shadow 100x3+0+0 -channel A -level 0,50% \
         +channel \) \
      +swap +repage -gravity center -composite \) \
-background transparent -extent x25 \) \
   \( -size x25 -fill black -background transparent -font MyriadPro- Semibold.otf \
      -pointsize 15 label:'Long legend for x' -gravity west \) \
   +append -strip legend_test.png