我正在使用GraphicsMagick的node.js module。
在我的Node JS应用程序中,我需要为现有图像添加文本标签,这样: 1)如果文本长于图像大小,文本将自动换行到下一行 2)如果文本无法放入图像中,文本的字体大小会自动调整(缩小)以适合图像的框
GraphicsMagick的node.js模块提供的API是:
gm(" img.png")。drawText(x,y,text [,gravity])
但是根据上述两个要求,这并没有提供任何选项来使文本符合框。如果我单独使用此API,我将需要手动中断文本,并更改文本字体大小以适合图像,但即使如此,我还是需要首先能够测量文本大小。有没有办法做到这一点?
有什么建议吗?
为了便于说明,下图显示了三个不同的文本字符串,这些字符串需要适合相同大小的框。希望它澄清。
答案 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);
});
}