分享一个用python做的ttf字体转png图片的小程序

分享一个用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("所有字符图像已生成!")

版权信息