用于将文本创建为位图的工具(抗锯齿文本、自定义间距、透明背景)

aka*_*ola 5 python unix fonts bitmap spacing

我需要批量创建带有文本的图像。要求:

  1. 任意大小的位图
  2. PNG格式
  3. 透明背景
  4. 黑色文本抗锯齿透明度
  5. 字符间距可调
  6. 可调整的文本位置(文本开始处的 x 和 y 坐标)
  7. TrueType 和/或 Type1 支持
  8. Unix 命令行工具或 Python 库

到目前为止,我已经评估了以下内容:

PIL 的问题在于,例如 Verdana 的默认间距太稀疏了。我需要文本更紧凑一些,但无法在 PIL 中对其进行调整。

在 ImageMagick 中,我还没有找到一种简单的方法来指定文本在图像中的开始位置(我使用的是 -size WIDTHxHEIGHT 和标题:'TEXT')。添加透明边框会将文本从其锚定的角落移开,但是

  • 由于边框增加了范围,因此需要相应地调整图像大小
  • 无法独立调整水平和垂直偏移

我是否错过了一些明显的替代方案或未能从上述提到的功能中找到必要的功能?

aka*_*ola 3

这是 SVG + ImageMagick 解决方案:

基于此模板以编程方式创建 SVG 文档,将“TEXT HERE”替换为所需的文本内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC
      "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" width="152px" height="50px">
  <text style="font-size: 22px; font-weight:bold; font-family: Verdana-Bold;
               letter-spacing: -1.3%;">
    <tspan x="10" y="39">TEXT HERE</tspan>
  </text>
</svg>
Run Code Online (Sandbox Code Playgroud)

使用 ImageMagick 将文档转换为背景透明的 PNG convert

$ convert -background none input.svg output.png
Run Code Online (Sandbox Code Playgroud)