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

7
我正在使用GraphicsMagick的node.js 模块。在我的Node JS应用程序中,我需要向现有图像添加文本标签,使得: 1)如果文本长于图像大小,则文本自动换行到下一行 2)如果文本无法适应图像,则文本的字体大小会自动调整(缩小)以适应图像框
GraphicsMagick的node.js模块提供的可用API如下: gm("img.png").drawText(x, y, text [, gravity])
但是,此API不提供任何选项来按照上述两个要求将文本适配到框中。如果仅使用此API,我需要手动分割文本,并更改文本字体大小以适应图像,但即使如此,我也需要先能够测量文本大小。有没有办法做到这一点?
有什么建议吗?
为了说明问题,下面的图像显示了需要适应相同大小框的三个不同文本字符串。希望它能澄清问题。

Illustration of Expected Output

1个回答

7

我失去了半天的时间,但是可以解决这个问题。我使用带有gm.subClass({imageMagick: true})的gm库。我认为你可以稍微修改一下代码,完全解决你的问题。

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);
  });

}


大小为400很清楚,但如何设置位置呢?我想设置垂直位置。 - Lasharela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接