Cloudflare 免费部署的图片工具二更:新增 AI 抠图功能
摘要
这个本地图片工具又更新了,这次加了 AI 抠图。丢一张图进去,一键去掉背景,输出透明 PNG,或者换成白底、红底、蓝底。全程在你自己的浏览器里算完,图片不上传。本文讲清抠图怎么用、遮罩 512 的分辨率上限意味着什么、哪些图能抠好哪些别指望,以及那个绕不开的代价——首次使用要下载本地模型。
date created: 星期五, 九月 25日 2026, 10:25:00 上午 date modified: 星期五, 九月 25日 2026, 10:38:42 上午

前言
上一篇《Cloudflare 免费部署的图片工具已更新:新增 AI 图片放大功能》发出去之后,这个项目又往前走了一步:AI 抠图 也加上了。图片拖进去,一键把背景去掉,输出带透明通道的 PNG,或者直接换成白底、红底、蓝底。
和压缩、放大一样,抠图也是在你自己的浏览器里算完的 —— 图片不上传、不出本机,也不消耗任何云端额度。这三件事(隐私、免费、不限量)能同时成立,靠的就是"全部在你设备上跑"这一个前提。
这篇讲四件事:抠图怎么用、它凭什么能本地跑、什么图能抠好什么图别指望、以及部署时要比上一篇多注意什么。
这次更新了什么
界面没变,还是顶栏那排胶囊标签,现在从两个变成了三个:

工具 | 网址 | 干什么 |
|---|---|---|
图片压缩 |
| 压缩、格式转换(AVIF / WebP / JPEG / PNG / JPEG XL),可批量 |
AI 放大 |
| 把图片放大 2~4 倍,AI 重建细节 |
AI 抠图 |
| 识别主体、去掉背景,输出透明 PNG 或换底色 |
三个工具共用同一套页面外壳,点标签是瞬间切换,不用整页跳转;同时各自保留独立网址,可以分别收藏、分别投放到不同平台。
AI 抠图怎么用
1. 第一次打开,先等它下载模型
打开 /cutout/,拖入一张图,点「一键抠图」。第一次会多一步:下载约 94 MB 的模型权重,进度条上会走「下载模型权重 → 初始化推理引擎 → 识别主体 → 合成中」四个阶段。

这一步只发生一次。下完之后权重会存进浏览器的缓存,以后再打开是秒开的 —— 除非你换了浏览器,或者手动清了缓存。
这里有个坑要提前说:如果你的设备没有 WebGPU,模型体积会从 94 MB 变成 192 MB,界面顶部会用黄条明确提示你,处理速度也会慢不少。原因在下一节讲。总之建议用桌面版 Chrome 或 Edge 打开。
2. 选模型、选边缘
右侧就两组参数,都不复杂。
模型有两个:
BiRefNet Lite —— 默认推荐,就是上面说的 94 MB 那个版本,发丝、毛绒这类细节也能抠得比较干净,绝大多数图片够用。
BiRefNet —— 完整版,只有设备不支持 WebGPU 时才会用到,效果和 Lite 基本一样,但文件大得多、速度慢不少。
注意这两个不是"画质高低"的关系,而是"能不能用"的关系,正常情况你不需要手动切。

边缘处理两档,「锐利」会把半透明的过渡带压窄,看起来更干净;「柔和」保留原本的羽化感,适合头发、毛绒这类需要自然过渡的主体。同一张图如果边缘显得发虚,切到「锐利」通常就对了。
3. 结果怎么看,底色怎么换
处理完之后有三个页签:
比较 —— 中间一条可拖动的分割线,左边原图右边结果,直接对着看。
结果 —— 只看抠好的图,透明区域显示为棋盘格。
原版 —— 只看原图。
还有个很顺手的小操作:按住空格键会临时露一下原图,松开就回去。检查头发边缘抠得准不准的时候特别好用。

底色有四个色块:透明、白、红、蓝。换底色是即时重合成的,不会重新跑一遍模型 —— 所以你可以四种都点一遍挑一个,秒出结果,不用等。
最后点「下载 PNG」保存,文件名会自动带上后缀,比如 xxx-cutout.png、xxx-cutout-red.png,换了底色不会覆盖前一张。
顺带提一句:目前放大和抠图都是单张处理的,一次只能来一张。这两个任务本来就是重计算,而且需要你逐张确认效果,批量反而没意义。要批量还是去压缩页,那边一次拖进去上百张都没问题。
它是怎么做到「本地抠图」的
先说清楚它到底在干什么。
抠图用的模型是 BiRefNet(Bilateral Reference Network),是一个显著性分割模型。你给它一张图,它输出一张同样尺寸的灰度遮罩:每个像素一个 0 到 1 之间的数,越接近 1 越像前景,越接近 0 越像背景。然后程序拿这张遮罩去裁原图 —— 遮罩值多少,那个像素就保留多少不透明度。所以它不是"描边抠图",而是逐像素判断,头发丝这种半透明区域也能保留下来。
模型的输入尺寸是固定的 512×512,而且是整图一次推理(不像放大那样要切瓦片)。这带来一个你要知道的代价:
**遮罩的分辨率上限就是 512×512。**源图比这大的话,程序会先把图缩到 512 送进去,拿到遮罩之后再放大回原图尺寸去裁。所以边缘精度受遮罩分辨率限制,而不是模型能力限制 —— 结果面板下方那条附注"遮罩按 512px 计算,放大到 1024px"说的就是这件事。这也是为什么主体占画面比例大一些、边缘更规整的图,抠出来更干净。
推理跑在哪?优先 WebGPU(跑在显卡上),建不起来就自动降到 WASM(跑在 CPU 上),多线程不行再降到单线程,不会直接失败。页面底部会显示当前实际用的后端。这就是前面那个"94 MB 还是 192 MB"的由来 —— fp16 和 fp32 是两套独立的权重文件,从 WebGPU 掉到 WASM 时得重新下一份,这是没法避免的。
还有一件事值得说:换算、合成这些都是在浏览器里做的,图片从头到尾没离开过这台设备。
哪些图效果好,哪些别指望
这节是我觉得最该看的,因为抠图的翻车点比放大集中得多。
效果好:单人半身像、证件照、商品图(主体明确、和背景有一定对比度)、宠物特写。这几类主体显著、边缘清楚,是 BiRefNet 的主场。
别指望它:
一张图里有多个对象 —— 它只会抠最突出的那一个,不会给你抠出一堆散件。
纯风景、没有明确前景 —— 可能直接判定为「没有主体」并给你提示,而不是甩一张几乎全透明的图给你。这个设计我觉得挺厚道。
主体太小、或和背景颜色太接近 —— 效果会明显打折。
超过 40 MB 的图 —— 直接拒收,换张小点的。
还有个"抠空了"的兜底:程序会统计结果里前景像素的占比,如果保留比例低于千分之二,就认为这次抠图没意义,直接报「没有找到明显的主体」,而不是让你下载一张全透明的废图。
遇到这些情况,换一张前景更清晰的图,通常比调参数更有效。
原来的压缩和放大(没变)
这两个工具一点没动。压缩还是拖进去、选格式(AVIF / WebP / JPEG / PNG / JPEG XL)和质量、实时出结果、支持批量:

放大还是 2~4 倍、瓦片推理、可拖动分割线对比。详细用法分别看前两篇,这里不重复。三个工具现在的能力边界可以这么记:
工具 | 一次几张 | 有像素/体积上限吗 | 要下模型吗 |
|---|---|---|---|
压缩 | 上百张 | 无 | 不用 |
AI 放大 | 单张 | 输出上限 6400 万像素 | 约 4.9 MB |
AI 抠图 | 单张 | 输入上限 40 MB | 约 94 MB(无 WebGPU 则 192 MB) |
部署(和上一篇完全一样)
已经 fork 并部署过的读者,不用重来一遍:打开你自己那个仓库页面,点 Sync fork → Update branch,把最新代码同步过来就行。Cloudflare 检测到新提交会自动重新构建,几分钟后就是最新版本。
从头部署的话,流程一步没变,照抄上一篇:
① fork 到自己的仓库
项目地址:https://github.com/haihaipypy/image-tools
② Cloudflare 导入这个仓库

③ 填构建命令和输出目录
构建命令填 npm run build,输出目录填 dist。

④ 添加自定义域名

两个注意事项和上一篇一样,再抄一遍:
建议加一个环境变量
NODE_VERSION = 22。项目用的构建工具对 Node 版本有要求(^20.19.0 || >=22.12.0),构建镜像自带的版本不一定满足,加这个变量最省事。别删项目里的
_headers文件。放大和抠图都要靠它给页面加上两个跨域隔离响应头,才能跑起多线程推理;少了这两个头,没有 WebGPU 的机器会掉到单线程,慢好几倍。Cloudflare 会自动读取这个文件,你什么都不用改。
抠图的权重不随仓库提交(94 MB 到 452 MB 实在塞不进任何静态托管),它是运行时从 HuggingFace 按固定版本号现拉的,所以部署时你什么都不用额外准备。网址也是可换的,代码里把版本钉死了,保证今天跑通的模型明天还是同一个。
结尾
线上地址还是 https://img.1day.vip/ ,现在压缩、放大、抠图三个都在,各自有独立网址:
**最后重点说一句:为了做到全程本地运行、图片不上传,首次使用需要下载本地模型。**压缩不用模型,打开就能用;放大要下约 4.9 MB;抠图要下约 94 MB(没有 WebGPU 的设备是 192 MB)。下载一次、永久缓存,之后秒开,换浏览器或清缓存才会重下。
这笔账我觉得很划算:用一次性的下载,换图片永远不出本机、换不限量的免费使用。处理私人照片、证件照、带敏感信息的截图,或者干脆断网干活,都很踏实。
项目开源(MIT),压缩部分基于 image-tools,抠图模型是 BiRefNet(MIT)。有问题,或者想加别的模型,评论区说一声。