You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Fontforge Python脚本导出带透明背景的PNG字体图标?

方案1:直接修改FontForge导出参数实现透明背景

FontForge的glyph.export()方法支持通过预设背景色参数实现透明导出,你只需要在遍历glyph前加一行配置,指定背景色为完全透明即可。修改后的代码如下:

import os
from fontforge import *

font = open(os.sys.argv[1])
# 设置背景色为完全透明(格式为0xAARRGGBB,AA为透明度通道,00为完全透明)
font.background_color = 0x00000000
for glyph in font:
    if font[glyph].isWorthOutputting():
        # 第三个参数指定是否启用alpha通道,设为True即可
        font[glyph].export(font[glyph].glyphname + ".png", None, True)

注:如果你的FontForge版本较老不支持上述参数,可使用下面的后处理方案。

方案2:导出后批量处理替换白色背景为透明

如果第一种方案不生效,可以先按原代码导出带白背景的PNG,再用Pillow库批量处理成透明背景,步骤如下:

  • 先安装Pillow库:pip install pillow
  • 运行如下处理脚本:
from PIL import Image
import os

# 替换为你的PNG文件所在目录
png_dir = "./"
for filename in os.listdir(png_dir):
    if filename.endswith(".png"):
        img = Image.open(os.path.join(png_dir, filename))
        img = img.convert("RGBA")
        datas = img.getdata()

        new_data = []
        for item in datas:
            # 把纯白色(RGB值都为255)的像素替换为完全透明
            if item[0] == 255 and item[1] == 255 and item[2] == 255:
                new_data.append((255, 255, 255, 0))
            else:
                new_data.append(item)
        
        img.putdata(new_data)
        img.save(os.path.join(png_dir, filename), "PNG")

如果你的图标本身包含纯白色元素,可以调整代码里的白色判断阈值,允许相近的白色也被替换为透明即可。

内容的提问来源于stack exchange,提问作者dartoism

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:24:04