Graphicsmagick:如何绘制文本以适合特定的框(宽度/高度)

时间:2017-04-11 01:52:04

标签: node.js graphicsmagick

我正在使用GraphicsMagick的node.js module

在我的Node JS应用程序中,我需要为现有图像添加文本标签,这样: 1)如果文本长于图像大小,文本将自动换行到下一行 2)如果文本无法放入图像中,文本的字体大小会自动调整(缩小)以适合图像的框

GraphicsMagick的node.js模块提供的API是:

gm(" img.png")。drawText(x,y,text [,gravity])

但是根据上述两个要求,这并没有提供任何选项来使文本符合框。如果我单独使用此API,我将需要手动中断文本,并更改​​文本字体大小以适合图像,但即使如此,我还是需要首先能够测量文本大小。有没有办法做到这一点?

有什么建议吗?

为了便于说明,下图显示了三个不同的文本字符串,这些字符串需要适合相同大小的框。希望它澄清。

Illustration of Expected Output

1 个答案:

答案 0 :(得分:1)

我迷路了半天,但可以解决这个问题。我将gm与gm.subClass({ imageMagick: true })一起使用。我认为您可以通过一些更改使用它来完全解决您的问题。

public createPreview(text: string) {
 this.imageGenerator(800, 600, '#4c4cfc')
  .fill('#FFFFFF')
  .font('../../../client/assets/fonts/GraphikLCG-Bold.woff')
  .fontSize('46')
  .out('-background', '#4c4cfc')
  .out('-size', '400x', 'caption:' + text)
  .out('-gravity', 'center')
  .out('-composite')
  .write('./brandNewImg.jpg', (err: any) => {
    console.log(err);
  });

}