我正在使用 GraphicsMagick 的 node.js module .
在我的 Node JS 应用程序中,我需要向现有图像添加文本标签,这样: 1)如果文本比图像长,文本自动换行到下一行 2) 如果文本无法适合图像,文本的字体大小会自动调整(缩小)以适合图像的框
GraphicsMagick 的 node.js 模块中可用的 API 是:
gm("img.png").drawText(x, y, text [, gravity])
但这并没有提供任何选项来根据上述两个要求将文本放入框中。如果我单独使用这个 API,我将需要手动打断文本,并更改文本字体大小以适合图像,但即便如此,我也需要首先能够测量文本大小。有办法吗?
有什么建议吗?
出于说明目的,下图显示了三个不同的文本字符串,它们需要放入相同大小的框中。希望它澄清。
最佳答案
我已经迷路了半天,但是可以解决这个问题。我将 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);
});
关于node.js - Graphicsmagick:如何绘制适合特定框的文本(宽度/高度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43335490/