Skip to content

Functionhx/Any-Render

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

证件照换底色工具 · idphoto

任意一张证件照(你自己的或别人的,不依赖原来的底色)方便地更换背景底色: 标准 白/蓝/红、莫兰迪色系淡色系,以及 渐变灰 等创意渐变底色。 发丝边缘会自动去除原底色光晕,蓝底换白底也不会留下蓝边。

全程本地运行,照片不上传任何服务器。

功能

  • 🎯 自动抠图换底,不依赖文件名/原底色
  • 🎨 纯色:标准白(#FFFFFF)/蓝(#438EDB)/红(#D6020A) 预设 + 任意十六进制自定义
  • 🌸 莫兰迪、淡色系等创意配色板(可在 idphoto/palettes.json 里随意扩展)
  • 🌫️ 渐变:影楼式径向「渐变灰」+ 自定义线性/径向两色渐变
  • ✂️ 发丝边缘去污(compositing-inversion),消除原底色光晕
  • 🖥️ 网页拖拽界面 + 命令行批量,两种用法共用一套核心逻辑

安装

依赖用 uv 管理(已锁定 Python 3.12):

uv sync          # 安装依赖(首次运行会创建 .venv)

首次抠图时会自动下载模型(默认 u2net_human_seg,约 168MB,从 GitHub 下载)。

网页界面(推荐)

uv run python -m idphoto.app

浏览器打开终端里显示的本地地址(默认 http://127.0.0.1:7860 ):拖入照片 → 选底色 (纯色 / 渐变,预设可一键填入并微调)→ 点「生成」→ 右上角下载。

命令行

# 预设/莫兰迪/淡色,按名称选
uv run python -m idphoto.cli IDCard_blue.png --preset 证件白
uv run python -m idphoto.cli IDCard_blue.png --preset 雾霾蓝

# 自定义纯色(十六进制)
uv run python -m idphoto.cli IDCard_blue.png --color "#C48E84"

# 预设渐变 / 自定义渐变
uv run python -m idphoto.cli IDCard_blue.png --gradient 渐变灰
uv run python -m idphoto.cli IDCard_blue.png --grad-radial "#FCFCFC,#C9CDD2"
uv run python -m idphoto.cli IDCard_blue.png --grad-linear "#E2F0EE,#6FB0A8:vertical"

# 批量处理整个文件夹,输出到 out/
uv run python -m idphoto.cli ./photos --batch --color "#FFFFFF" -o out

# 高质量模型 + 精修边缘(更慢)
uv run python -m idphoto.cli IDCard_blue.png --model birefnet-portrait --refine
参数 说明
--color HEX 自定义纯色,如 #FFFFFF
--preset 名称 预设/莫兰迪/淡色 中的颜色名
--gradient 名称 预设渐变名,如 渐变灰
`--grad-linear "A,B[:vertical horizontal]"`
--grad-radial "中心色,边缘色" 自定义径向渐变
--model u2net_human_seg(默认/快)或 birefnet-portrait(更精细/慢)
--refine 开启 alpha matting 精修边缘
--no-decontaminate 关闭边缘去污(默认开启)
-o, --out 输出文件(单张)或目录;不填则与原图同目录
--batch 把 input 当作文件夹批量处理

扩展配色

编辑 idphoto/palettes.json,往 morandi / pastel / gradients 里加条目即可, 网页和命令行都会自动识别(每项含中文名 + hex)。

工作原理

抠图(rembg) → 估计原底色 → 去污还原前景色 → 渲染新底色 → alpha 合成

关键在「去污」:证件照原底是近似纯色 B,对半透明发丝像素按合成公式反解 F = (C − (1−α)·B) / α 还原真实前景色,再叠到新底色上,从源头消除彩色光晕。

模型说明:默认 u2net_human_seg(GitHub 托管、快、轻、效果已很好); birefnet-portrait 发丝更精细但模型约 900MB、推理更慢。BiRefNet 权重若需从 Hugging Face 下载,代码已默认走 hf-mirror.com 镜像(适配 HF 被墙的网络)。

测试

uv run pytest

隐私

抠图与合成全部在本地完成,证件照不会上传到任何第三方服务。

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages