Araluma 如何运作

技术细节说明每个工具做什么、在哪里运行,以及您如何自行验证。

简短说明

Araluma 采用混合架构:两个工具完全在您的浏览器中运行,零上传; 另外两个工具在浏览器无法达到同等质量时,会通过我们自己的基础设施路由单次网络请求。 我们会在每个工具以及本页面中明确告知您当前所走的路径。

工具处理位置
Circle Crop100% 在您的浏览器中,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 使用 FileReaderBlob.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 标签页

  1. 在新标签页中打开 Araluma,并打开 DevTools → Network
  2. 使用 Circle Crop压缩预览滑块。您只会看到 HTML/CSS/JS/字体的请求,以及首次使用时的相关 WebAssembly 模块。不会有任何携带您图片字节的请求。
  3. 现在使用压缩 → 下载移除背景。您将恰好看到一条 POST 请求——指向 api.araluma.com(压缩)或移除背景 Worker,携带您的图像——以及一条返回结果的响应。悬停任意请求可查看大小和耗时。

“Initiator”列显示触发每个请求的脚本,“Type”列显示发送的内容。我们不隐藏其中任何信息。

方法 2——离线使用工具

  1. 加载任意 Araluma 工具页面。对一张小图使用一次移除背景,以便浏览器内 ISNet 模型完成缓存。
  2. 打开 DevTools → Network → 勾选离线(或关闭 Wi-Fi)。
  3. 重新加载页面;静态资源已缓存,页面仍可正常加载。
  4. 逐一尝试每个工具:
    • 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.17 on Node 24 — 位于 api.araluma.com 的压缩下载服务,运行于德国 Hostinger VPS 上。
  • Cloudflare Web Analytics — 无 Cookie 的聚合页面浏览量统计。

浏览器支持

所有工具在 Chrome、Firefox、Safari 和 Edge 的当前版本及上一个版本中均可运行——桌面端和移动端皆支持。网站采用渐进增强方式:在浏览器支持较新 API 时(如 showSaveFilePickerOffscreenCanvas),我们使用它;不支持时则回退到旧的等效方案。没有”您的浏览器不受支持”的拦截页面。

唯一的硬性要求是 JavaScript(用于任何工具)以及网络连接(仅在使用压缩下载或默认移除背景路径时——其他路径在首次页面加载后可完全离线运行)。

问题反馈

还有我们未涉及的内容?发邮件至 support@araluma.com。欢迎技术问题。