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

标签 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

最佳答案

我已经迷路了半天,但是可以解决这个问题。我将 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/

相关文章:

imagemagick - 将 sprite 表转换为 gif 动画

image-processing - 将自定义 ImageMagick (GraphicsMagick) 包络失真应用于文本

javascript - 如何在本地开发 npm 模块

javascript - 如何在 Sequelize 中进行自加入?

javascript - node-fetch 3.0.0 和 jest 给出 SyntaxError : Cannot use import statement outside a module

javascript - 如何在 javascript 中解析 ls 命令响应的文件列表

javascript - Node JS - Youtube API 为空白

php - 用于 php 安装的 Gmagick 扩展——如何安装以及在何处安装?

ubuntu - 无法同时安装 GraphicsMagick 和 ImageMagick

image - 如何使用 gm node.js 进行复合?