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

Gau*_*ain 6 node.js graphicsmagick

我正在使用GraphicsMagick的node.js 模块.

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

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

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

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

有什么建议?

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

预期输出的插图

Вик*_*кий 7

我已经浪费了半天时间,但可以解决这个问题。我使用 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);
  });
Run Code Online (Sandbox Code Playgroud)

}