0

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

所需输出的样机

我在以下命令中完成了所有这些工作,除了阴影文本标签不在固定大小的框中(应该是 100 像素 x 25 像素)。结果如下:

实际结果

认为我需要做的是以某种方式关闭 -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

(修剪选项需要将高度降低到 25 像素——否则阴影操作会产生太大的垂直延伸。编辑:我想我上面错了——即使没有 -trim 命令中的任何位置,我希望的固定尺寸图像不起作用。)

4

1 回答 1

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
于 2013-03-19T03:48:41.430 回答