Araluma 如何运作

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

简短说明

Araluma 采用混合架构:大多数工具完全在您的浏览器中运行,零上传,而少数工具会在浏览器无法达到同等质量时,通过我们自己的基础设施路由单次网络请求,并始终配有一个隐形的客户端回退。我们会在每个工具以及本页面中告诉您当前所走的路径。

下表具有代表性,但并不详尽(目录在持续扩充)。它为每一类路径各举一例:

示例工具处理位置
Circle Crop(仅浏览器)100% 在您的浏览器中,Canvas API。无上传,可离线使用。
Compress 预览(仅浏览器)100% 在您的浏览器中,canvas.toBlob。无上传。滑块保持即时。
Compress 下载(涉及服务器)单次往返至我们位于 api.araluma.com 的服务(德国 VPS 上的 sharplibvips),并配有浏览器回退。
Remove Background(涉及服务器)单次往返至在边缘 GPU 上运行 BiRefNet 的 Cloudflare Worker,并在您的浏览器中配有 WebAssembly 回退。

裁剪、缩放、PDF 和格式转换工具(AVIF 输出路径除外)位于仅浏览器一侧。压缩下载、移除背景、AI 放大以及 AVIF 输出转换位于涉及服务器一侧,各自都配有本地回退。

您可以在约 30 秒内验证仅浏览器的说法:打开 DevTools,进入 Network 面板,清空日志,然后使用任意仅浏览器工具。您会看到携带您图片字节离开页面的请求为零。对于涉及服务器的工具,您每次操作将恰好看到一次上传,指向上述具名端点。

为何选择混合架构

大多数在线图像工具处于某个极端:把一切都上传到服务器(您要等待往返,运营方还会留存您的文件),或者全部在浏览器中处理(您在编码和 AI 步骤上付出质量与速度的代价)。两个极端都无法处处取胜。

我们在浏览器本就出色的地方选择了客户端处理。<canvas> 元素负责裁剪、旋转、缩放,以及 JPG 或 WebP 的有损预览编码,而现代浏览器可原生解码每一种常见格式。我们只在浏览器仍有可测量差距的少数步骤上选择服务端处理:

  • 压缩,在最终下载环节。服务端的 sharplibvips 在相同视觉质量下,生成的文件按字节比浏览器编码器小 10 到 15%,并提供浏览器所不具备的 AVIF 速度与色度调优。滑块与预览仍在您的浏览器中运行,使迭代保持即时。只有点击”下载”时才会经过我们的服务。
  • AI 移除背景,在默认路径。Cloudflare 图像分割所运行的 BiRefNet 模型(与 remove.bg 同一架构)需要真正的 GPU 才能在一两秒内完成。浏览器内回退(通过 ONNX Runtime 加 WebAssembly 运行的 ISNet)可以工作,但耗时长得多,且在发丝、毛发和精细边缘上抠图明显更粗糙。
  • AI 放大,在默认路径。云端超分辨率能恢复浏览器端重采样无法恢复的细节,并在服务不可达时配有浏览器回退。

我们为这些路径走服务端所接受的代价,是每次操作一次往返。我们在其他所有地方保持客户端处理所避免的,正是迭代最频繁的工作流环节上的同一笔开销。

处理流程详解

1. 您选择文件

通过文件选择器、拖放或粘贴,浏览器将一个 File 对象交给 JavaScript。JavaScript 使用 FileReaderBlob.arrayBuffer() 读取字节。在这一步中,无论您使用哪个工具,文件都不会通过网络发送。

2. 浏览器解码图像

现代浏览器可原生解码 JPG、PNG、WebP、GIF 和 AVIF。我们使用 createImageBitmap() 在主线程之外将原始字节转换为 GPU 可处理的位图。对于不能原生解码 HEIC 的浏览器,我们回退到在您浏览器本地运行的 WebAssembly 解码器。

3. 工具执行处理,路径在此分叉

  • 仅浏览器工具(裁剪、缩放、压缩预览与滑块、PDF 合成,以及大多数格式转换)。它们都作为 Canvas 像素变换和 canvas.toBlob 重新编码,直接在您的机器上运行。交互式裁剪框使用 Cropper.js没有任何内容离开页面。
  • 压缩下载。 当您点击”下载”时,图像一次性发送至 api.araluma.com(一个运行于德国 Hostinger VPS 上的 Fastify 服务,Node 加 sharplibvips,与 Squoosh 服务端路径所用的 C 库相同)。图像按您在预览中设定的参数重新编码,字节流式传回。该服务保留一个租户隔离的内容寻址缓存(输入字节加参数的哈希值),因此用相同设置重复下载同一图像时会重放已缓存的字节。该缓存不以您的身份、IP 或文件名建立索引。若服务不可达,工具将回退至浏览器内预览 blob。
  • 移除背景,默认云端路径。 图像一次性上传至 Cloudflare Worker,暂存于一个私有 R2 存储桶,由 Cloudflare 图像分割在边缘 GPU 上运行 BiRefNet 模型处理,抠图结果流式传回。无论结果如何,暂存对象都会在一小时内由 R2 生命周期规则删除。典型照片在一两秒内完成。每日每 IP 与上传大小上限确保免费层可持续。
  • 移除背景,WebAssembly 回退。 若 Worker 不可达(您的网络中断、严格防火墙拦截、当日配额已满,或文件超过云端上限),工具会悄然切换至在本地通过 ONNX Runtime Web 与 WebAssembly 运行的 ISNet 模型。首次运行会下载模型并耗时更久,后续运行更快。此路径无任何上传,可在 DevTools 中验证。
  • AI 放大。 默认路径将图像一次性发送至云端超分辨率服务并把放大结果流式传回,并在服务不可达时配有浏览器端回退。

4. 您下载结果

输出位图被编码为 Blob,包装成 object URL,交给您浏览器的标准文件保存对话框。文件出现在您的磁盘上。

如何自行验证

任选其一:

方法 1. 观察 Network 标签页

  1. 在新标签页中打开 Araluma,并打开 DevTools,然后是 Network 面板。
  2. 使用 Circle Crop 或 Compress 预览滑块这类仅浏览器工具。您只会看到 HTML、CSS、JS 和字体的请求,以及首次使用时相关的 WebAssembly 模块。不会有任何请求携带您的图片字节。
  3. 现在使用 Compress Download 或 Remove Background 这类涉及服务器的工具。您将恰好看到一条 POST 把您的图像送往那个具名端点,并有一条返回结果的响应。悬停任意请求即可查看其大小与耗时。

“Initiator”列告诉您是哪个脚本触发了每个请求,“Type”列告诉您发送了什么。两者我们都不隐藏。

方法 2. 离线使用工具

  1. 加载任意 Araluma 工具页面。对一张小图运行一次 Remove Background,让浏览器内的 ISNet 模型完成缓存。
  2. 打开 DevTools,进入 Network,勾选 Offline(或关闭 Wi-Fi)。
  3. 重新加载页面。静态资源已缓存,因此页面仍可加载。
  4. 试用各工具:
    • 仅浏览器工具继续工作。它们从不需要网络。
    • Compress Download 回退至浏览器内预览 blob(编码效率略低,但仍可用)。
    • Remove Background 回退至 ISNet WebAssembly 模型,无需任何出站请求即可工作。

如果这些工具在离线状态下都能工作(部分降级,仅浏览器的那些完全一致),那么按定义来说,没有任何服务器看到过您的图像。

我们能看到什么,以及看不到什么

仅浏览器路径上,我们对您的图像一无所知。没有可查看的请求,没有可存储的缓存,没有可检索的日志行。

涉及服务器的路径上:

  • Compress Download 在编码期间(通常几百毫秒)看到图像字节,在其 TTL 期间保留一条内容寻址缓存条目,仅此而已。缓存不以用户、IP、文件名或任何可用于找到”您的”图像的标识符建立索引。我们不记录图像内容。该编码服务由切换前 v1 所服务的同一批租户共享,具备每租户 CORS、速率限制和 HMAC 签名规范 URL。
  • Remove Background 在暂存上传与分割调用期间(通常一两秒)看到图像,之后暂存副本由 R2 生命周期规则删除。我们从不把您的字节交给任何第三方模型提供商。BiRefNet 模型在 Cloudflare 自有基础设施内运行,而非 remove.bg、fal.ai 或 Replicate 之类的外部 API。
  • AI 放大 在超分辨率调用期间看到图像,返回结果,不保留任何与您相关的内容。

在每条路径上,我们的分析提供商(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>,为浏览器端工具与预览进行 JPEG、PNG、WebP 和 AVIF 编码。
  • Cropper.js,裁剪矩形交互层。
  • ONNX Runtime Web,为 Remove Background 运行 ISNet WebAssembly 回退。
  • Cloudflare 托管静态构建并从边缘提供服务,并在默认 Remove Background 路径背后运行 Workers、R2 和图像分割流水线(BiRefNet)。
  • Node 上的 Fastify 加 sharplibvips,位于 api.araluma.com 的 Compress 下载服务,运行于德国的一台 Hostinger VPS 上。
  • Cloudflare Web Analytics,聚合的、无 Cookie 的页面浏览量统计。

浏览器支持

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

唯一的硬性要求是 JavaScript(用于任何工具)以及网络连接(仅在使用涉及服务器的路径时,仅浏览器工具在首次页面加载后可完全离线运行)。

问题

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