2

我似乎无法控制字体大小、背景和填充。

命令1:

convert             \
   testimage.jpg    \
   label:'Days: 0'  \
  -background Black \
  -fill White       \
  -pointsize 1      \
  -gravity center   \
  -append           \
   days_1.jpg

图片:

在此处输入图像描述

命令2:

convert             \
   testimage.jpg    \
   label:'Days: 0'  \
  -background White \
  -fill Black       \
  -pointsize 48     \
  -gravity center   \
  -append           \
   days_2.jpg

在此处输入图像描述

4

1 回答 1

3

你没有做对:-)

您似乎误解了 的含义-label

看看官方文档是怎么说的-label

标签不是在图像上绘制的,而是通过标签标签或类似机制嵌入到图像数据流中。如果您希望标签在图像本身上可见,请使用 -draw 选项...

试试这个命令:

convert                               \
   http://i.stack.imgur.com/FoTPN.jpg \
  -pointsize 48                       \
  -fill green                         \
  -gravity center                     \
  -draw "text 100,-200 'Day: 0'"      \
   so-12359743-labelled.png

你应该得到这个结果:

结果图像

使用时记住这些规则-draw

-fill您可以分别使用、-font和设置原始颜色、字体和字体边界框颜色-box选项按命令行顺序处理,因此请务必在选项之前使用这些-draw选项。

(我的重点)

或者,-draw您也可以使用-annotate将文本放入图像中。(但是,-annotate使用的语法略有不同,您可以轻松阅读。)


更新

你为什么不接受我关于选项顺序的提示?!?

试试这个命令:

convert                               \
   http://i.stack.imgur.com/h2Exm.jpg \
  -background White                   \
  -fill Black                         \
  -pointsize 48                       \
  -gravity center                     \
   label:'Days: 0'                    \
  -append                             \
   days_2.jpg

你会得到:

'-append' 的结果

请记住,您-append确实连接了 2 个不同的图像:

  1. 第一个是您的原始输入图像。
  2. 第二个是新创建的-background ... -fill ... -pointsize ... -label ...

-append不支持与 的串联-gravity center。仅当您还使用 为第二张图片定义了画布大小时,此选项才有意义-size,但您没有。

在没有预定义画布大小的情况下,该-label操作将自动创建一个足够大以容纳文本字符串的画布。您可以使用以下命令验证此行为:

convert                               \
   http://i.stack.imgur.com/h2Exm.jpg \
  -background White                   \
  -fill Black                         \
  -pointsize 48                       \
  -gravity center                     \
   label:'abcdefghijklmnopqrstuvwxyz' \
  -append                             \
   days_3.jpg

您的使用尝试-gravity center使我相信您希望文本出现在原始输入图像中间的某个位置。因此我指向-drawand -annotate

于 2012-09-10T22:22:43.203 回答