如何修复nodejs gm(GraphicsMagicks)文本随机显示粗体问题

问题描述 投票:0回答:1

我使用nodejs gm drawText函数根据坐标向图像添加文本。除了随机以粗体显示的文本(下图中标记的红色边框)之外,一切都很好。我不需要以粗体显示文本。如何让所有文字正常显示(不加粗)?

 const imageGM = gm(originalImagePath).font(path.join(__dirname, '../', 'assets/R-PMingLiU-TW-2.ttf'));
 const fntSize = 42;
 imageGM.fontSize(fntSize).drawText(xPos, YPos, value);

输出图像:

node.js imagemagick graphicsmagick gm
1个回答
0
投票

您在 Node.js 中的 gm 模块中遇到的问题(文本随机显示为粗体)可能是由于底层 GraphicsMagick/ImageMagick 系统的字体渲染或抗锯齿设置造成的。但是,gm 模块不提供对这些设置的直接控制。

Node.js 中的 gm 模块是 GraphicsMagick/ImageMagick 命令行工具的包装器,因此其功能受到这些工具的限制。

您使用的

drawText 函数是 GraphicsMagick 中绘图基元的一部分。根据 GraphicsMagick 文档draw 命令(包括 drawText)允许您使用形状、文本和其他图形元素来注释图像。但是,文档没有提供如何处理文本渲染的具体细节

您可以尝试以下一些方法:

    该问题可能特定于您使用的字体。尝试使用 不同的字体,看看问题是否仍然存在。
  • 有时,某些字体大小可能会导致渲染问题。实验 用不同的字体大小看看是否有区别。
  • 确保您使用的是最新版本的 GraphicsMagick 或 图像魔术师。升级到最新版本可能会解决该问题,如果 这是一个错误,已在新版本中修复。
  • 使用不同的库:如果上述解决方案都不起作用,您 可能需要考虑使用不同的图像库 使您可以更好地控制文本渲染的操作。
以下资源可能会帮助您更多地了解此问题:

请注意,GraphicsMagick 的 Node.js 包装器中的 drawText 函数的行为可能与 ImageMagick 中的行为不完全相同

© www.soinside.com 2019 - 2024. All rights reserved.