Câu trả lời ngắn gọn
Araluma sử dụng kiến trúc lai: hai công cụ chạy hoàn toàn trong trình duyệt của bạn mà không cần tải lên, và hai công cụ định tuyến một yêu cầu mạng duy nhất qua cơ sở hạ tầng của chúng tôi khi trình duyệt không thể đáp ứng yêu cầu về chất lượng. Chúng tôi cho bạn biết đang dùng đường nào, trong mỗi công cụ và trên trang này.
| Công cụ | Nơi xử lý |
|---|---|
| Circle Crop | 100% trong trình duyệt của bạn, Canvas API. Không tải lên, hoạt động ngoại tuyến. |
| Compress — xem trước (thanh trượt + so sánh định dạng) | 100% trong trình duyệt của bạn, canvas.toBlob. Không tải lên. |
| Compress — tải xuống cuối cùng | Một lượt khứ hồi đến dịch vụ của chúng tôi tại api.araluma.com (Fastify + sharp + libvips trên VPS ở Đức). |
| Remove Background | Một lượt khứ hồi đến Cloudflare Worker chạy BiRefNet trên GPU edge của Cloudflare, với dự phòng WebAssembly trong trình duyệt của bạn khi đám mây không khả dụng. |
Bạn có thể xác minh các tuyên bố phía client trong khoảng 30 giây: mở DevTools → Network, xóa nhật ký, sau đó dùng Circle Crop hoặc thanh trượt xem trước Compress — bạn sẽ thấy không có yêu cầu nào mang byte ảnh của bạn rời khỏi trang. Với hai công cụ có liên quan đến máy chủ, bạn sẽ thấy đúng một lần tải lên mỗi thao tác, đến các endpoint được nêu ở trên.
Tại sao kiến trúc lai
Hầu hết công cụ ảnh trực tuyến đứng ở một trong hai thái cực: tải lên mọi thứ lên máy chủ (bạn chờ khứ hồi và người vận hành giữ tệp của bạn), hoặc hoàn toàn trong trình duyệt (bạn chịu thiệt về chất lượng và tốc độ ở bước mã hóa/AI). Không thái cực nào thắng ở mọi nơi.
Chúng tôi chọn phía client ở những nơi trình duyệt đã thực sự xuất sắc — phần tử <canvas>
xử lý cắt, xoay và mã hóa xem trước có mất mát theo định dạng JPG/WebP — và phía máy chủ
ở những nơi trình duyệt vẫn thua kém đo được:
- Nén ảnh, ở bước tải xuống cuối cùng.
sharp+libvips 8.17phía máy chủ tạo ra tệp nhỏ hơn 10–15% byte-for-byte so với bộ mã hóa trình duyệt ở cùng chất lượng hiển thị, đồng thời cho phép tinh chỉnh tốc độ/chroma AVIF và đầu ra JPEG XL mà trình duyệt không cung cấp. Thanh trượt/xem trước vẫn chạy trong trình duyệt của bạn để việc chỉnh sửa vẫn tức thì; chỉ thao tác “Tải xuống” mới đi qua dịch vụ của chúng tôi. - Xóa nền bằng AI, trên đường mặc định. Mô hình BiRefNet mà
cf.image.segmentcủa Cloudflare chạy (cùng kiến trúc với remove.bg) cần GPU thực sự để hoàn thành trong 1–3 giây. Dự phòng trong trình duyệt (ISNet qua ONNX Runtime + WebAssembly) hoạt động được, mất 20–40 giây lần đầu và 2–10 giây sau đó, và cho ra kết quả cắt xén kém hơn rõ rệt ở tóc, lông và các cạnh mảnh.
Chi phí chúng tôi chấp nhận khi dùng phía máy chủ ở hai đường đó là một lượt khứ hồi mỗi thao tác. Chi phí chúng tôi tránh được bằng cách giữ phía client ở mọi nơi khác (Circle Crop, xem trước Compress) là phí khứ hồi trên những phần quy trình làm việc lặp lại nhanh nhất.
Quy trình xử lý, từng bước
1. Bạn chọn tệp
Qua bộ chọn tệp, kéo và thả, hoặc dán, trình duyệt chuyển cho JavaScript một
đối tượng File. JavaScript đọc các byte bằng FileReader hoặc
Blob.arrayBuffer(). Tại không thời điểm nào trong bước này tệp được gửi qua mạng,
bất kể bạn đang dùng công cụ nào.
2. Trình duyệt giải mã ảnh
Các trình duyệt hiện đại giải mã tự nhiên JPG, PNG, WebP, GIF và AVIF. Chúng tôi sử dụng
createImageBitmap() để chuyển các byte thô thành bitmap mà GPU có thể xử lý,
bên ngoài luồng chính. Đối với HEIC trên các trình duyệt không giải mã tự nhiên, chúng tôi
sử dụng bộ giải mã WebAssembly chạy cục bộ trong trình duyệt của bạn.
3. Công cụ thực hiện nhiệm vụ — đây là nơi các đường phân kỳ
- Circle Crop. Biến đổi pixel Canvas 2D với đường dẫn cắt hình tròn. Bitmap được vẽ vào
<canvas>ở góc xoay và mức thu phóng đã chọn, clip tròn được áp dụng, và phần bên trong vòng tròn được đọc lại dưới dạngImageData. Cropper.js xử lý khung cắt tương tác. Hoàn toàn trong trình duyệt của bạn. - Compress — xem trước và thanh trượt. Mã hóa lại JPG, PNG, WebP hoặc AVIF bằng
canvas.toBlobđể xem trước cạnh nhau cập nhật khi bạn di chuyển thanh trượt chất lượng. Hoàn toàn trong trình duyệt của bạn. Chưa có lần tải lên nào. - Compress — Tải xuống. Khi bạn nhấn “Tải xuống”, ảnh được gửi một lần đến
api.araluma.com(dịch vụ Fastify chạy trên VPS ở Đức vận hành bởi Hostinger, Node 24 +sharp 0.34+libvips 8.17, cùng thư viện C mà Squoosh sử dụng trên đường máy chủ). Ảnh được mã hóa lại với các tham số bạn đã đặt trong xem trước, và các byte được truyền trực tuyến về trình duyệt của bạn. Dịch vụ lưu bộ đệm được phân lập theo tenant, đánh địa chỉ theo nội dung (một hash của byte đầu vào + tham số) giới hạn 500 MB để tải xuống lại cùng ảnh với cùng cài đặt sẽ phát lại các byte đã lưu — bộ đệm không được lập chỉ mục theo bạn, IP hay tên tệp. Nếu dịch vụ không khả dụng, công cụ sẽ dự phòng về blob xem trước trong trình duyệt. - Remove Background — đường đám mây mặc định. Ảnh được tải lên một lần đến Cloudflare Worker (
araluma-bg-remover), dàn dựng trong bucket R2 riêng tư (araluma-bg-temp), xử lý bởi phép biến đổicf.image.segmentcủa Cloudflare chạy mô hình BiRefNet trên GPU edge của Cloudflare, và phần cắt được truyền trực tuyến về. Đối tượng R2 đã dàn dựng bị xóa trong vòng một giờ bởi quy tắc vòng đời R2, bất kể kết quả. Ảnh điển hình hoàn thành trong 1–3 giây. Giới hạn theo IP mỗi ngày và giới hạn tải lên 5 MB giữ cho bậc miễn phí bền vững. - Remove Background — dự phòng WebAssembly. Nếu Worker không khả dụng (mạng của bạn bị ngắt, bạn đứng sau tường lửa nghiêm ngặt, hạn ngạch hàng ngày đã hết, hoặc tệp vượt quá giới hạn đám mây 5 MB), công cụ tự động chuyển sang mô hình ISNet chạy cục bộ trong trình duyệt của bạn qua ONNX Runtime Web với WebAssembly. Lần đầu tải về mô hình ~80 MB và mất 20–40 giây; các lần sau mất 2–10 giây. Không tải lên trên đường này — bạn có thể xác minh trong DevTools.
4. Bạn tải xuống kết quả
Bitmap đầu ra được mã hóa thành Blob, gói trong object URL, và được cung cấp
cho hộp thoại lưu tệp tiêu chuẩn của trình duyệt. Tệp xuất hiện trên đĩa của bạn.
Cách tự xác minh
Chọn phương pháp bạn thích:
Phương pháp 1 — Theo dõi tab Network
- Mở Araluma trong tab mới và mở DevTools → Network.
- Dùng Circle Crop hoặc thanh trượt xem trước Compress. Bạn sẽ thấy các yêu cầu cho HTML/CSS/JS/phông chữ, cùng các module WebAssembly liên quan khi dùng lần đầu. Không có yêu cầu nào mang byte ảnh của bạn.
- Bây giờ dùng Compress → Tải xuống hoặc Remove Background. Bạn sẽ thấy đúng một
POSTđếnapi.araluma.com(Compress) hoặc đến Worker Remove Background, mang ảnh của bạn — và một phản hồi trả về với kết quả. Di chuột vào bất kỳ yêu cầu nào để xem kích thước và thời gian.
Cột “Initiator” cho biết script nào đã kích hoạt mỗi yêu cầu, và cột “Type” cho biết những gì đã được gửi. Chúng tôi không ẩn cái nào cả.
Phương pháp 2 — Dùng công cụ ngoại tuyến
- Tải bất kỳ trang công cụ Araluma nào. Dùng Remove Background một lần với ảnh nhỏ để mô hình ISNet trong trình duyệt được lưu vào bộ đệm.
- Mở DevTools → Network → đánh dấu Offline (hoặc tắt Wi-Fi).
- Tải lại trang; các tài sản tĩnh đã được lưu đệm, vì vậy trang vẫn tải.
- Thử từng công cụ:
- Circle Crop và xem trước Compress tiếp tục hoạt động — chúng không bao giờ cần mạng.
- Compress Tải xuống dự phòng về blob xem trước trong trình duyệt (mã hóa kém hiệu quả hơn một chút, nhưng vẫn hoạt động).
- Remove Background dự phòng về mô hình ISNet WebAssembly và hoạt động không cần yêu cầu ra ngoài.
Nếu bốn công cụ hoạt động ngoại tuyến (một hơi giảm cấp, ba hoàn toàn như cũ), theo định nghĩa không có máy chủ nào nhìn thấy ảnh của bạn.
Những gì chúng tôi thấy — và những gì chúng tôi không thấy
Trên các đường phía client, chúng tôi không thấy gì về ảnh của bạn. Không có yêu cầu nào để xem xét, không có bộ đệm nào để lưu trữ, không có dòng nhật ký nào để grep.
Trên các đường phía máy chủ:
- Compress Tải xuống nhìn thấy các byte ảnh trong suốt thời gian mã hóa (thường vài trăm mili giây), lưu một mục bộ đệm đánh địa chỉ theo nội dung trong TTL bộ đệm, và đó là tất cả. Bộ đệm không được lập chỉ mục theo người dùng, IP, tên tệp, hay bất kỳ định danh nào chúng tôi có thể dùng để tìm ảnh “của bạn”. Chúng tôi không ghi nội dung ảnh. Dịch vụ mã hóa được dùng chung giữa hai tenant giống như v1 phục vụ trước khi chuyển đổi, với CORS, giới hạn tốc độ và URL canonical được ký HMAC riêng theo tenant.
- Remove Background nhìn thấy ảnh trong suốt thời gian tải lên dàn dựng và lệnh gọi phân đoạn (thường 1–3 giây tổng cộng), sau đó bản sao đã dàn dựng bị xóa bởi quy tắc vòng đời R2. Chúng tôi không bao giờ gọi bất kỳ nhà cung cấp mô hình bên thứ ba nào với byte của bạn — mô hình BiRefNet chạy bên trong cơ sở hạ tầng riêng của Cloudflare, không phải trên API bên ngoài kiểu remove.bg / fal.ai / Replicate.
Trên mọi đường, nhà cung cấp phân tích của chúng tôi (Cloudflare Web Analytics) ghi lại dữ liệu lượt xem trang tổng hợp — URL, quốc gia, họ trình duyệt, Core Web Vitals. Không cookie, không định danh liên tục, không có gì gắn với một người cụ thể.
Với các công cụ tải xuống module WebAssembly khi dùng lần đầu (bộ giải mã HEIC, mô hình ONNX ISNet), nhà cung cấp hosting của chúng tôi thấy rằng ai đó đã tải module — giống như thấy họ tải tệp CSS. Bản thân module không chứa bất kỳ thông tin nào về ảnh của bạn.
Bộ dữ liệu đầy đủ có trong chính sách quyền riêng tư của chúng tôi.
Stack công nghệ
Dành cho những ai tò mò:
- Astro — bộ tạo trang web tĩnh. Mỗi trang được gửi dưới dạng HTML thuần túy với các “island” JavaScript được cải thiện dần dần chỉ ở nơi có các công cụ tương tác.
- CSS thuần với thuộc tính tùy chỉnh — không Tailwind, không CSS-in-JS. Toàn bộ hệ thống thiết kế là một tệp
tokens.cssduy nhất. canvas.toBlob/<canvas>— mã hóa JPEG, PNG, WebP, AVIF (hỗ trợ trình duyệt) trong xem trước Compress, và toàn bộ Circle Crop.- Cropper.js — lớp tương tác khung cắt.
- ONNX Runtime Web — chạy dự phòng ISNet WebAssembly cho Remove Background.
- Cloudflare Pages — lưu trữ bản dựng tĩnh, phục vụ từ edge.
- Cloudflare Workers + R2 +
cf.image.segment(BiRefNet) — quy trình Remove Background mặc định. - Fastify +
sharp 0.34+libvips 8.17trên Node 24 — dịch vụ tải xuống Compress tạiapi.araluma.com, trên VPS Hostinger ở Đức. - Cloudflare Web Analytics — đếm lượt xem trang tổng hợp, không cookie.
Hỗ trợ trình duyệt
Tất cả công cụ hoạt động trên phiên bản hiện tại và trước đó của Chrome, Firefox, Safari
và Edge — máy tính để bàn và di động. Trang web sử dụng cải tiến dần dần: ở những nơi trình duyệt
hỗ trợ API mới hơn (ví dụ: showSaveFilePicker, OffscreenCanvas), chúng tôi sử dụng nó;
ở những nơi không hỗ trợ, chúng tôi sử dụng tương đương cũ hơn. Không có tường
“trình duyệt của bạn không được hỗ trợ”.
Yêu cầu cứng duy nhất là JavaScript (cho mọi công cụ) và kết nối mạng (chỉ khi dùng Compress Tải xuống hoặc đường Remove Background mặc định — các đường khác chạy hoàn toàn ngoại tuyến sau lần tải trang đầu tiên).
Câu hỏi
Có điều gì chúng tôi chưa đề cập? Gửi email cho chúng tôi tại support@araluma.com. Câu hỏi kỹ thuật được chào đón.