你的图片去了哪:修图派 RetouchPi 逐步骤量了请求与字节
一张图拖进浏览器里的编辑器之后,它的字节去了哪?这一页把答案逐条记下来:2026-10-10 那一轮,一张 702,047 字节的 1920×1080 JPEG 在捆绑的 Chromium 里走了八个动作 —— 打开、拖入、抠图、证件照、导出 PNG、导出 PDF、存 PSD、重新打开 PSD —— 每个动作的请求清单与出机图片字节都量在下面。结论先说:这八个动作里出机的图片字节是 0;方向反过来的字节有两类,人脸模型的下载与懒加载的代码 chunk;而唯一会把你的图送出浏览器的一步是 AI,它没登录时连按钮都点不动。首屏把边界说清:常规修图全程在本机,AI 生成与改图是唯一走服务端的一步。
修订于 2026-10-10 · 约 2560 字
八个动作,逐个记请求
量法先说清:捆绑的 Chromium 开着网络日志,八个动作各跑一段,段与段之间把日志清空,所以每一段里的请求只属于那一个动作;动作由真 UI 触发(菜单项、抽屉、导出按钮),不是合成调用。出机图片字节的口径是请求体里带图片内容的字节数,状态接口返回的开关位不算。样张是仓库里现成的产品图,不是合成渐变。
| 动作 | 请求数 | 出机图片字节 | 那几条请求是什么 |
|---|---|---|---|
| 打开编辑器(首屏) | 18 | 0 | 文档、js、css,加若干开关与价目接口 |
| 拖入那张 702,047 字节的图 | 0 | 0 | 一条都没有 |
| 抠图(去背景) | 1 | 0 | 一条开关查询 |
| 证件照 | 2 | 0 | 一条模型下载加一条开关查询 |
| 导出 PNG | 0 | 0 | 一条都没有 |
| 导出 PDF | 2 | 0 | 两个懒加载代码 chunk |
| 存 PSD | 1 | 0 | 一个懒加载代码 chunk |
| 重新打开 PSD | 0 | 0 | 一条都没有 |
/api/ai/status 问的是「AI 这一步开着吗」,响应里只有一个开关位;yunet.plan 是人脸检测模型,方向是下载。两者都不带图片字节,但它们是真请求,所以表里照实记 1 与 2,不把它们抹成 0。
最容易看错的是抠图那一段:网络面板里那一条请求的名字带着 ai 字样,读者会以为图被送去做推理了。把它点开看请求体就明白:那是一个开关查询,响应里只有状态位;真正做抠图的是页面里的 wasm,跑完直接把蒙版写回当前图层。证件照那一段同理,多出来的一条是模型下载,下载完检测在本机跑,抽屉里那句「没有找到脸,这张按选区取景」就是本机检测的原话。


方向反过来的两类字节
「图片有没有出机」只回答了半个问题,另半个是「什么字节进了这台机器」。这一轮量到两类。一类是模型:证件照抽屉第一次打开时取 yunet.plan,233,012 字节,取过一次就缓存,同一轮里第二次打开抽屉不再取;仓库同目录还有 selfie.plan(451,172 字节),这一轮没有动作触发它,它就一次都没被取。另一类是代码:第一次导出 PDF 才懒加载 pdf-*.js 与 flate-*.js 两个 chunk,第一次存 PSD 才懒加载 psd-*.js,都是首屏没带、用到才取的一次性代码。
第三类字节是出口,方向朝你的磁盘:导出 PNG 落下 794,399 字节,导出 PDF 落下 134,284 字节,存 PSD 落下 7,327,638 字节。PSD 那一行有个值得记的细节:中文界面那一轮是 7,327,638,英文界面那一轮是 7,327,662,差 24 字节 —— 图层名跟着界面语言走,名字长短不同,容器字节就不同,像素一个没变。这三份文件是这张图在这一轮里唯一落下的副本,站点不留存。
| 字节落在哪 | 字节 | 什么时候触发 |
|---|---|---|
yunet.plan 进这台机器 | 233,012 | 证件照抽屉第一次打开 |
| 导出的 PNG 到你的磁盘 | 794,399 | 点导出 PNG |
| 导出的 PDF 到你的磁盘 | 134,284 | 点导出 PDF |
| 存下的 PSD 到你的磁盘 | 7,327,638 | 点存 PSD(中文界面那一轮;英文那一轮 7,327,662) |
两个懒加载代码 chunk 没进这张表:它们是代码不是图片,字节数随构建哈希变,写死一个数等于写死一个会过期的数。

yunet.plan 233,012 字节,方向是下载;检测在本机跑,抽屉里那句取景说明就是它写的。唯一走服务端的一步,没登录时长这样
AI 生成与改图是唯一走服务端的一步,源图会上传;这一页不把它藏起来,也不把它和常规修图混进同一句话。没登录时探针量到的是:GET /api/ai/credits?limit=1 回 401,而 /api/ai/status、/api/ai/models、/api/ai/gallery、/api/ai/templates 都回 200 —— 开关与价目表是公开的,点数是你的,所以点数那一条要登录。发送按钮的文案是「登录后生成」,状态是 disabled;探针真的点了一下:0 个请求、0 字节出机,/api/ai/image/jobs 一条都没有。
登录之后这一步也不是盲提交:面板在提交前报价,报价那一格没登录时是空的。送出去的那份栅格长边收在 1536,要回来的画幅顶到 2048,这两个数各说各的事,逐张照片的对照表在讲结果落位的那一页里;点数口径是 1 credit = 1 US cent,总价在提交前看得见。

自己验:网络面板照着做一遍
- 打开编辑器前先开 DevTools 的网络面板,勾上保留日志,过滤条件选 Fetch/XHR;首屏那 18 条请求会先铺出来,那是开关、价目与画库,不是你的图。
- 拖一张图进去,看请求列表:一条都不该多出来。多出来的话,点开看请求体里有没有图片字节,那就是这一页该改的地方。
- 打开证件照抽屉,会多一条
yunet.plan:看方向与大小列,它是下载,233,012 字节,进不是出。 - 没登录时点 AI 那颗发送按钮:请求列表不动。登录后它会先报价,报价格里有数了,再决定提不提交。
- 导出 PNG、导出 PDF、存 PSD 各来一次:看下载目录里那三个文件的大小,和这一页的 794,399、134,284、7,327,638 对一遍,量级对得上就是同一条管线。
什么能证伪这一页:上面任何一段在没登录时出现一条带图片字节的出机请求,或者某个动作凭空多出请求。读数量于 2026-10-10 的捆绑 Chromium 构建;换一个构建,chunk 的名字与字节会变,方法不变,所以方法写在这里,而不是只写结论。
这一页不主张的事
- 不主张「只有我们」在本机跑:在浏览器里做常规修图不是独门技术,这一页量的是我们这一份实现的请求清单,读数是它的,不是排他主张。
- 不主张离线可用:编辑器是一个网页,断网就没有它;这一页说的「在本机」指图片字节不出机,不是指不需要网络。
- 不主张 AI 那一步在本机:它是唯一走服务端的一步,源图会上传;常规修图全程在本机,AI 生成与改图是唯一走服务端的一步。
- 不主张导出带 alpha 的成品:PNG 导出压平透明,这一版不会给你带透明通道的透明 PNG;要分层,出口是 PSD。
- 不主张「一个请求都没有」:开关查询、模型下载与懒加载 chunk 都是真请求,这一页把它们逐条记进表里,而不是把它们藏成一个零。
常见问答
抠图会把我的图送到服务器吗?
不会。抠图跑在页面里的 wasm 上,蒙版直接写回当前图层;那一段唯一的一条请求是 /api/ai/status,问的是 AI 开关状态,响应里只有一个状态位。八个动作量下来,出机的图片字节是 0。
证件照那一步为什么有一条网络请求?
那是人脸检测模型 yunet.plan 的下载,233,012 字节,方向是进不是出;下载完之后检测在本机跑,抽屉里那句取景说明就是本机检测写的。抽屉没打开过,这个文件一次都不会被取。
没登录时点 AI 生成会发生什么?
什么都不会发生:按钮是 disabled 的,文案写着「登录后生成」,探针点了一下,0 个请求、0 字节,任务队列里一条都没有。登录后面板先报价再提交,点数口径 1 credit = 1 US cent。
导出的文件存在哪里?
你的磁盘:PNG 794,399 字节、PDF 134,284 字节、PSD 7,327,638 字节(中文界面那一轮;英文那一轮 7,327,662,差在图层名的字节)。站点不留副本,这一轮里这张图唯一的三份拷贝就是你下载目录里那三个文件。
接着看
把你那张图放进来,开着网络面板看一遍
编辑器免费,打开就能拖文件。八个动作照着做一遍,网络面板里的清单和下载目录里那三个文件,就是你自己的一份读数;对得上,这一页的表就是你的表。
作为亚马逊联盟会员,我们可能从符合条件的购买中获得佣金。