简短说明
Araluma 采用混合架构:两个工具完全在您的浏览器中运行,零上传; 另外两个工具在浏览器无法达到同等质量时,会通过我们自己的基础设施路由单次网络请求。 我们会在每个工具以及本页面中明确告知您当前所走的路径。
| 工具 | 处理位置 |
|---|---|
| Circle Crop | 100% 在您的浏览器中,Canvas API。无上传,支持离线使用。 |
| 压缩预览(滑块 + 格式对比) | 100% 在您的浏览器中,canvas.toBlob。无上传。 |
| 压缩最终下载 | 单次往返至我们位于 api.araluma.com 的服务(德国 VPS 上的 Fastify + sharp + libvips)。 |
| 移除背景 | 单次往返至运行 BiRefNet 的 Cloudflare Worker(在 Cloudflare 边缘 GPU 上),当云端不可达时在浏览器中切换为 WebAssembly 回退。 |
您可以在约 30 秒内验证客户端的说法:打开 DevTools → Network,清空日志,然后使用 Circle Crop 或压缩预览滑块——您会看到零条携带您图片字节的请求离开页面。对于两个涉及服务器的工具,每次操作您将恰好看到一次上传,指向上述命名端点。
为什么选择混合架构
大多数在线图像工具处于两个极端之一:要么将一切上传至服务器(您等待往返延迟,运营方保留您的文件),要么完全在浏览器中处理(您在编码/AI 步骤上付出质量和速度的代价)。两个极端都无法在所有场景中胜出。
我们在浏览器已经表现出色的地方选择了客户端处理——<canvas> 元素处理裁剪、旋转以及 JPG/WebP 的有损预览编码——在浏览器仍有明显差距的地方选择了服务端处理:
- 图像压缩,在最终下载环节。服务端
sharp+libvips 8.17在相同视觉质量下,比浏览器编码器产生的文件小 10–15%,同时提供了浏览器不支持的 AVIF 速度/色度调优和 JPEG XL 输出。滑块/预览仍在您的浏览器中实时运行,保持即时迭代;只有点击”下载”时才会经过我们的服务。 - AI 移除背景,默认云端路径。Cloudflare
cf.image.segment运行的 BiRefNet 模型(与 remove.bg 同一架构)需要真正的 GPU 才能在 1–3 秒内完成。浏览器内回退方案(通过 ONNX Runtime + WebAssembly 运行的 ISNet)也能工作,但首次运行需 20–40 秒,此后每次需 2–10 秒,且在发丝、毛发和精细边缘上产生明显质量更低的抠图。
选择这两条路径走服务端的代价是每次操作一次往返。在其他所有环节(Circle Crop、压缩预览)保持客户端处理,所节省的正是迭代最频繁的工作流部分的往返开销。
处理流程详解
1. 您选择文件
通过文件选择器、拖放或粘贴,浏览器将一个 File 对象交给 JavaScript。JavaScript 使用 FileReader 或 Blob.arrayBuffer() 读取字节。在这一步中,无论使用哪个工具,文件都不会通过网络发送。
2. 浏览器解码图像
现代浏览器可原生解码 JPG、PNG、WebP、GIF 和 AVIF。我们使用 createImageBitmap() 在主线程之外将原始字节转换为 GPU 可处理的位图。对于不支持 HEIC 原生解码的浏览器,我们回退到在您浏览器本地运行的 WebAssembly 解码器。
3. 工具执行处理——路径在此分叉
- Circle Crop。 使用圆形裁剪路径的 Canvas 2D 像素变换。位图以所选旋转角度和缩放比例绘制到
<canvas>上,应用圆形裁剪后,圆内内容作为ImageData读回。交互式裁剪框由 Cropper.js 处理。完全在您的浏览器中。 - 压缩——预览与滑块。 使用
canvas.toBlob对 JPG、PNG、WebP 或 AVIF 重新编码,使并排预览随质量滑块的移动实时更新。完全在您的浏览器中。 此时尚无上传。 - 压缩——下载。 当您点击”下载”时,图像一次性发送至
api.araluma.com(一个运行于德国 Hostinger VPS 上的 Fastify 服务,Node 24 +sharp 0.34+libvips 8.17,与 Squoosh 服务端路径使用相同的 C 库)。图像按您在预览中设定的参数重新编码,字节流式传回您的浏览器。该服务保留一个租户隔离的内容寻址缓存(输入字节 + 参数的哈希值),上限为 500 MB,以便用相同设置重复下载同一图像时直接返回缓存字节——缓存不以您的身份、IP 或文件名建立索引。若服务不可达,工具将回退至浏览器内预览 blob。 - 移除背景——默认云端路径。 图像一次性上传至 Cloudflare Worker(
araluma-bg-remover),暂存于私有 R2 存储桶(araluma-bg-temp),由 Cloudflare 的cf.image.segment转换在边缘 GPU 上运行 BiRefNet 模型处理,抠图结果流式传回。暂存的 R2 对象无论处理结果如何,均会在一小时内由 R2 生命周期规则删除。典型照片在 1–3 秒内完成。每日每 IP 限额和 5 MB 上传上限确保免费层可持续运行。 - 移除背景——WebAssembly 回退。 若 Worker 不可达(您的网络中断、防火墙严格限制、当日配额已满,或文件超过 5 MB 云端上限),工具将透明切换至在您浏览器本地运行的 ISNet 模型(通过 ONNX Runtime Web 以 WebAssembly 执行)。首次运行需下载约 80 MB 的模型,耗时 20–40 秒;后续运行需 2–10 秒。此路径无任何上传——您可在 DevTools 中验证。
4. 您下载结果
输出位图被编码为 Blob,包装成 object URL,提供给浏览器的标准文件保存对话框。文件出现在您的磁盘上。
如何自行验证
选择您偏好的任一方法:
方法 1——观察 Network 标签页
- 在新标签页中打开 Araluma,并打开 DevTools → Network。
- 使用 Circle Crop 或压缩预览滑块。您只会看到 HTML/CSS/JS/字体的请求,以及首次使用时的相关 WebAssembly 模块。不会有任何携带您图片字节的请求。
- 现在使用压缩 → 下载或移除背景。您将恰好看到一条
POST请求——指向api.araluma.com(压缩)或移除背景 Worker,携带您的图像——以及一条返回结果的响应。悬停任意请求可查看大小和耗时。
“Initiator”列显示触发每个请求的脚本,“Type”列显示发送的内容。我们不隐藏其中任何信息。
方法 2——离线使用工具
- 加载任意 Araluma 工具页面。对一张小图使用一次移除背景,以便浏览器内 ISNet 模型完成缓存。
- 打开 DevTools → Network → 勾选离线(或关闭 Wi-Fi)。
- 重新加载页面;静态资源已缓存,页面仍可正常加载。
- 逐一尝试每个工具:
- Circle Crop 和压缩预览持续正常工作——它们从未依赖网络。
- 压缩下载回退至浏览器内预览 blob(编码效率略低,但可用)。
- 移除背景回退至 ISNet WebAssembly 模型,无需任何出站请求即可工作。
如果四个工具在离线状态下均可工作(一个略有降级,三个完全一致),那么从定义上说,没有任何服务器看到过您的图像。
我们能看到什么——以及我们看不到什么
在客户端路径上,我们对您的图像一无所知。没有可查看的请求,没有可存储的缓存,没有可追溯的日志行。
在服务端路径上:
- 压缩下载在编码期间(通常几百毫秒)看到图像字节,保留一条内容寻址缓存条目至缓存 TTL 过期,仅此而已。缓存不以用户、IP、文件名或任何可用于找到”您的”图像的标识符建立索引。我们不记录图像内容。编码服务由切换前 v1 所服务的同两个租户共享,具有每租户 CORS、速率限制和 HMAC 签名规范 URL。
- 移除背景在暂存上传和分割调用期间(通常共 1–3 秒)看到图像,之后暂存副本由 R2 生命周期规则删除。我们从不将您的字节发送给任何第三方模型提供商——BiRefNet 模型在 Cloudflare 自有基础设施内运行,而非 remove.bg、fal.ai 或 Replicate 类外部 API。
在所有路径上,我们的分析提供商(Cloudflare Web Analytics)记录聚合页面浏览数据——URL、国家/地区、浏览器系列、Core Web Vitals。无 Cookie,无持久标识符,无任何与个人关联的信息。
对于首次使用时需要下载 WebAssembly 模块的工具(HEIC 解码器、ISNet ONNX 模型),我们的托管提供商会看到有人获取了该模块——就像看到有人获取 CSS 文件一样。模块本身不包含任何关于您图像的信息。
完整的数据清单在我们的隐私政策中。
技术栈
供感兴趣的朋友参考:
- Astro — 静态站点生成器。每个页面以纯 HTML 发布,仅在有交互工具的地方使用渐进增强的 JavaScript”岛屿”。
- 原生 CSS 与自定义属性 — 无 Tailwind,无 CSS-in-JS。完整的设计系统只有一个
tokens.css文件。 canvas.toBlob/<canvas>— 在压缩预览及 Circle Crop 的全部流程中进行 JPEG、PNG、WebP、AVIF(浏览器支持范围内)编码。- Cropper.js — 裁剪矩形交互层。
- ONNX Runtime Web — 运行移除背景的 ISNet WebAssembly 回退。
- Cloudflare Pages — 托管静态构建,从边缘节点提供服务。
- Cloudflare Workers + R2 +
cf.image.segment(BiRefNet) — 默认移除背景流水线。 - Fastify +
sharp 0.34+libvips 8.17on Node 24 — 位于api.araluma.com的压缩下载服务,运行于德国 Hostinger VPS 上。 - Cloudflare Web Analytics — 无 Cookie 的聚合页面浏览量统计。
浏览器支持
所有工具在 Chrome、Firefox、Safari 和 Edge 的当前版本及上一个版本中均可运行——桌面端和移动端皆支持。网站采用渐进增强方式:在浏览器支持较新 API 时(如 showSaveFilePicker、OffscreenCanvas),我们使用它;不支持时则回退到旧的等效方案。没有”您的浏览器不受支持”的拦截页面。
唯一的硬性要求是 JavaScript(用于任何工具)以及网络连接(仅在使用压缩下载或默认移除背景路径时——其他路径在首次页面加载后可完全离线运行)。
问题反馈
还有我们未涉及的内容?发邮件至 support@araluma.com。欢迎技术问题。