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

如何使用Python Pillow快速实现黑白背景上的文字颜色自动反显

Pillow实现文字像素自动反显的高效方案

你可以通过PIL内置的ImageChops模块和图像合成功能实现需求,所有像素操作都在底层C层执行,相比Python层逐像素遍历效率提升数十倍,完全满足大尺寸图像的处理需求。

实现逻辑

核心思路是通过文字蒙版提取需要反色的区域,直接批量反色后合成到原图:

  • 生成和原图尺寸一致的灰度蒙版,在指定位置绘制白色文字,其余区域为黑色
  • 生成整张原图的反色图像
  • 以文字蒙版为遮罩,将反色图像中对应文字的区域合成到原图上,得到最终效果

可运行代码示例

from PIL import Image, ImageDraw, ImageFont, ImageChops

def add_reverse_color_text(origin_img, text, text_pos, font):
    # 生成文字蒙版,文字区域为白色(255),其余区域为黑色(0)
    text_mask = Image.new('L', origin_img.size, 0)
    draw = ImageDraw.Draw(text_mask)
    draw.text(text_pos, text, fill=255, font=font)
    
    # 生成原图的反色图
    reversed_img = ImageChops.invert(origin_img)
    
    # 按蒙版合成:文字区域显示反色图,其余区域显示原图
    result_img = Image.composite(reversed_img, origin_img, text_mask)
    return result_img

# 调用示例
if __name__ == "__main__":
    # 读取你的黑白图像,若为RGB模式可去掉.convert('L')
    img = Image.open("your_image_path.png").convert('L')
    # 加载字体,替换为你系统中的字体路径,第二个参数为字号
    use_font = ImageFont.truetype("C:/Windows/Fonts/msyh.ttc", 50)
    # 添加反显文字,(100, 100)为文字左上角坐标
    final_img = add_reverse_color_text(img, "测试反显文字", (100, 100), use_font)
    # 保存结果
    final_img.save("result.png")

注意事项

  • 该方法支持单通道灰度图、三通道RGB图、带透明通道的RGBA图,只需对应调整输入图像的模式即可
  • 字体路径需要替换为你设备上实际存在的字体文件路径,避免加载字体报错
  • 若需要调整文字透明度,修改蒙版中文字的fill值即可,数值越低文字越透明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:03