分享一个用python做的ttf字体转png图片的小程序,设置好参数后输入想要生成的文字即可
制作表盘时文字图片不用一个一个去ps抠了
代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 引入该用的库
print("正在准备中,请稍等...")
import os
import matplotlib.pyplot as plt
from fontTools.ttLib import TTFont
from matplotlib.font_manager import FontProperties
import matplotlib.patheffects as path_effects


# 这些是可以修改的参数
font_path = '1.ttf' # 字体文件,你的字体名
output_dir = './output/' # 字体输出目录
dpi = 60 # 值越大,生成的图片越大
hs = 92 # 镂空字体大小
hw = 4 # 镂空字体描边宽度
hc = "black" # 镂空字体颜色
ss = 100 # 实心字体大小
sc = "black" # 实心字体颜色


# 来一句欢迎语
print("欢迎使用一个生成字体图片的小pyhton程序\n请提前在py文件里设置相应的参数\nmade by 天影大侠")
# 创建输出目录存
if not os.path.exists(output_dir):
os.makedirs(output_dir)
i = "欢迎给天影大侠点赞"
while i == "欢迎给天影大侠点赞":
# 输入字符
input_text = input("请输入要生成图片的字符: ")
print("正在生成中... 字符越多生成越久")

# 使用fontTools读取字体
font = TTFont(font_path)

# 生成实心字体和镂空字体的PNG图片
def render_character(char, is_hollow=False):
# 替换非法字符,防止命名报错
valid_char = char.replace("?", "问号")

# 使用matplotlib生成字体图像
fig, ax = plt.subplots(figsize=(1.2, 2), dpi=dpi)
ax.set_axis_off()

# 选择字体
prop = FontProperties(fname=font_path)

if is_hollow:
# 镂空字体
text = ax.text(0.5, 0.5, char, fontsize=hs, ha='center', va='center', fontproperties=prop, color='none', weight='bold')
text.set_path_effects([
path_effects.withStroke(linewidth=hw, foreground=hc,
capstyle='round', joinstyle='round') # 圆滑转角
])
else:
# 实心字体
ax.text(0.5, 0.5, char, fontsize=ss, ha='center', va='center', fontproperties=prop, color=sc, weight='bold')

# 调整边界
plt.subplots_adjust(left=0, right=1, top=1, bottom=0)

# 转换为透明背景的PNG
image_path = os.path.join(output_dir, f'{valid_char}_{"hollow" if is_hollow else "solid"}.png')
plt.savefig(image_path, format='png', transparent=True)
plt.close(fig)

# 渲染输入的每个字符
for char in input_text:
render_character(char, is_hollow=False) # 实心字体
render_character(char, is_hollow=True) # 镂空字体

print("所有字符图像已生成!")