分享一个用python做的ttf字体转png图片的小程序,设置好参数后输入想要生成的文字即可
制作表盘时文字图片不用一个一个去ps抠了
代码如下
# 引入该用的库
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("所有字符图像已生成!")
版权信息
- 文章作者: 天影大侠
- 文章链接: https://blog.skyshadow.fun/posts/20250413083804/
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议 。转载请注明来源本站