الإجابة المختصرة
يعتمد Araluma على معمارية هجينة: تعمل أداتان بالكامل في متصفحك دون أي رفع للملفات، وتُمرّر أداتان طلبًا شبكيًا واحدًا عبر بنيتنا التحتية حين لا يستطيع المتصفح مجاراة الجودة المطلوبة. نُخبرك بالمسار الذي تسلكه في كل أداة وعلى هذه الصفحة.
| الأداة | أين تجري المعالجة |
|---|---|
| Circle Crop | بالكامل في متصفحك، Canvas API. لا رفع، يعمل دون اتصال. |
| معاينة Compress (شريط التمرير + مقارنة الصيغ) | بالكامل في متصفحك، canvas.toBlob. لا رفع. |
| تنزيل Compress النهائي | رحلة واحدة ذهابًا وإيابًا إلى خدمتنا على api.araluma.com (Fastify + sharp + libvips على خادم VPS في ألمانيا). |
| Remove Background | رحلة واحدة ذهابًا وإيابًا إلى Cloudflare Worker يُشغّل BiRefNet على وحدات معالجة الرسومات في حافة Cloudflare، مع بديل WebAssembly في متصفحك حين تتعذّر الوصول إلى السحابة. |
يمكنك التحقق من الادعاءات الخاصة بجانب العميل في نحو 30 ثانية: افتح DevTools → Network، امسح السجل، ثم استخدم Circle Crop أو شريط معاينة Compress — لن ترى أي طلب يحمل بايتات صورتك يغادر الصفحة. بالنسبة للأداتين اللتين تتصلان بالخادم، ستجد بالضبط طلب رفع واحد لكل عملية، موجَّهًا إلى النقاط النهائية المذكورة أعلاه.
لماذا المعمارية الهجينة
تقع معظم أدوات الصور الإلكترونية في أحد طرفَين: إما رفع كل شيء إلى خادم (تنتظر رحلات الذهاب والإياب والمشغّل يحتفظ بملفك)، أو معالجة كل شيء في المتصفح (تدفع ثمنًا في الجودة والسرعة عند مراحل الترميز والذكاء الاصطناعي). لا يتفوق أي من الطرفين في كل الحالات.
اخترنا جانب العميل حيث تتميز المتصفحات بالفعل — إذ يتولى عنصر <canvas> القص والتدوير وترميز المعاينة المضغوطة بصيغ JPG/WebP — ولجأنا إلى جانب الخادم حيث يخسر المتصفح بشكل قابل للقياس:
- ضغط الصور، عند التنزيل النهائي. ينتج
sharp+libvips 8.17من جانب الخادم ملفات أصغر بنسبة 10-15% بايتًا لكل بايت مقارنةً بمرمّزات المتصفح عند الجودة البصرية ذاتها، ويتيح ضبط سرعة AVIF وكروما وإخراج JPEG XL غير متاح في المتصفح. يظل شريط التمرير والمعاينة في متصفحك لتبقى التكرارات فورية؛ فقط نقرة “تنزيل” تمر عبر خدمتنا. - إزالة الخلفية بالذكاء الاصطناعي، في المسار الافتراضي. يحتاج نموذج BiRefNet الذي تُشغّله وحدة
cf.image.segmentفي Cloudflare (البنية المعمارية ذاتها التي يستخدمها remove.bg) إلى وحدة معالجة رسومات حقيقية لينجز المهمة في 1-3 ثوانٍ. البديل في المتصفح (ISNet عبر ONNX Runtime + WebAssembly) يعمل، لكنه يستغرق 20-40 ثانية عند أول تشغيل و2-10 ثوانٍ بعد ذلك، وينتج قصًا أخشن للشعر والفراء والحواف الدقيقة.
التكلفة التي نتحملها مقابل الاعتماد على الخادم في هذين المسارين هي رحلة واحدة ذهابًا وإيابًا لكل عملية. التكلفة التي نتفادى دفعها بالبقاء في جانب العميل في كل مكان آخر (Circle Crop، ومعاينة Compress) هي رسوم رحلة الذهاب والإياب في الأجزاء التي تتكرر بأسرع وتيرة.
مسار المعالجة خطوة بخطوة
1. تختار ملفًا
حين تختار صورة — عبر مربع اختيار الملف، أو السحب والإفلات، أو اللصق — يمرّر المتصفح إلى JavaScript كائنًا من نوع File. يقرأ JavaScript البايتات باستخدام FileReader أو Blob.arrayBuffer(). في هذه الخطوة لا يُرسَل الملف عبر الشبكة في أي لحظة، بصرف النظر عن الأداة التي تستخدمها.
2. يفكّ المتصفح ترميز الصورة
تفكّ المتصفحات الحديثة ترميز JPG وPNG وWebP وGIF وAVIF بصورة أصيلة. نستخدم createImageBitmap() لتحويل البايتات الخام إلى صورة نقطية تستطيع وحدة معالجة الرسومات التعامل معها، خارج الخيط الرئيسي. بالنسبة لـ HEIC في المتصفحات التي لا تدعم فك ترميزه أصيلًا، نلجأ إلى مفكك ترميز WebAssembly يعمل محليًا في متصفحك.
3. الأداة تؤدي مهمتها — هنا تتشعّب المسارات
- Circle Crop. تحويل بكسل Canvas 2D بمسار قطع دائري. تُرسم الصورة النقطية في
<canvas>بالتدوير والتكبير المختارَين، يُطبَّق القطع الدائري، ثم تُقرأ محتويات الدائرة كـImageData. تتولّى Cropper.js التفاعل مع إطار القص. بالكامل في متصفحك. - Compress — المعاينة وشريط التمرير. يُعيد ترميز JPG أو PNG أو WebP أو AVIF باستخدام
canvas.toBlobلكي تتحدث المعاينة المجاورة فور تحريك شريط تمرير الجودة. بالكامل في متصفحك. لا رفع بعد. - Compress — التنزيل. حين تنقر “تنزيل”، تُرسَل الصورة مرة واحدة إلى
api.araluma.com(خدمة Fastify تعمل على خادم VPS في ألمانيا تديره Hostinger، بيئة Node 24 +sharp 0.34+libvips 8.17، وهي مكتبات C ذاتها التي يستخدمها Squoosh في مساره الخادمي). تُعاد إعادة ترميزها بالمعاملات ذاتها التي ضبطتها في المعاينة، وتُبثّ البايتات مجددًا إلى متصفحك. تحتفظ الخدمة بذاكرة تخزين مؤقت معزولة عنوانها المحتوى (تجزئة بايتات الإدخال مع المعاملات) بحجم أقصاه 500 ميغابايت، بحيث يُعيد تنزيل الصورة ذاتها بالإعدادات ذاتها البايتات المخزَّنة — لا يُفهرَس هذا التخزين بحسب المستخدم أو عنوان IP أو اسم الملف. إن تعذّر الوصول إلى الخدمة، ينتقل الأداء بسلاسة إلى استخدام blob المعاينة الناتج عن المتصفح. - Remove Background — مسار السحابة الافتراضي. تُرفع الصورة مرة واحدة إلى Cloudflare Worker باسم
araluma-bg-remover، وتُودَع في دلو R2 خاص (araluma-bg-temp)، وتُعالَج بواسطة تحويلcf.image.segmentفي Cloudflare الذي يُشغّل نموذج BiRefNet على وحدات معالجة الرسومات في حافة Cloudflare، وتُبثّ الصورة المقصوصة مجددًا. يُحذف كائن R2 المؤقت خلال ساعة واحدة بقاعدة دورة حياة R2، بصرف النظر عن النتيجة. تنتهي صورة فوتوغرافية نموذجية في 1-3 ثوانٍ. تفرض حدود يومية لكل عنوان IP وحد أقصى 5 ميغابايت لحجم الرفع للحفاظ على استدامة الخطة المجانية. - Remove Background — بديل WebAssembly. إن تعذّر الوصول إلى Worker (انقطع اتصالك بالشبكة، كنت وراء جدار حماية صارم، امتلأ الحصة اليومية، أو تجاوز الملف حد 5 ميغابايت السحابي)، ينتقل الأداة بشفافية إلى نموذج ISNet الذي يعمل محليًا في متصفحك عبر ONNX Runtime Web بخلفية WebAssembly. يُنزَّل النموذج عند أول تشغيل (~80 ميغابايت) ويستغرق 20-40 ثانية؛ التشغيلات اللاحقة تستغرق 2-10 ثوانٍ. لا رفع في هذا المسار — يمكنك التحقق من ذلك في DevTools.
4. تنزّل النتيجة
تُرمَّز الصورة النقطية الناتجة في Blob، تُلفّ في object URL، وتُعرض على مربع حوار حفظ الملف المعتاد في متصفحك. يظهر الملف على قرصك.
كيف تتحقق بنفسك
اختر الطريقة التي تفضّلها:
الطريقة الأولى — راقب تبويب Network
- افتح Araluma في تبويب جديد وافتح DevTools → Network.
- استخدم Circle Crop أو شريط معاينة Compress. ستجد طلبات لـHTML/CSS/JS/الخطوط فحسب، إضافةً إلى وحدات WebAssembly ذات الصلة عند أول استخدام. لن يحمل أي طلب بايتات صورتك.
- الآن استخدم Compress → تنزيل أو Remove Background. ستجد بالضبط طلب
POSTواحدًا موجَّهًا إلىapi.araluma.com(Compress) أو إلى Worker الخاص بـ Remove Background، يحمل صورتك — واستجابة واحدة تُعيد النتيجة. مرّر مؤشرك فوق أي طلب لترى حجمه وتوقيته.
عمود “Initiator” يخبرك أي نص برمجي أطلق كل طلب، وعمود “Type” يخبرك بما أُرسل. لا نُخفي شيئًا من ذلك.
الطريقة الثانية — استخدم الأدوات دون اتصال
- حمّل أي صفحة أداة من Araluma. استخدم Remove Background مرة على صورة صغيرة لكي يُخزَّن نموذج ISNet في ذاكرة التخزين المؤقت.
- افتح DevTools → Network → ضع علامة في خانة Offline (أو أوقف Wi-Fi).
- أعد تحميل الصفحة؛ الأصول الثابتة مخزَّنة في التخزين المؤقت فتظل الصفحة تعمل.
- جرّب كل أداة:
- Circle Crop ومعاينة Compress تستمران في العمل — لم تحتاجا إلى الشبكة قط.
- تنزيل Compress ينتقل إلى blob المعاينة الناتج عن المتصفح (ترميز أقل كفاءة قليلًا، لكن يعمل).
- Remove Background ينتقل إلى نموذج ISNet عبر WebAssembly ويعمل دون أي طلب صادر.
إن عملت الأدوات الأربع دون اتصال (واحدة متدنية الأداء قليلًا، وثلاث مماثلة)، فبحكم التعريف لم يرَ أي خادم صورتك.
ما نراه نحن — وما لا نراه
على مسارات جانب العميل، لا نرى شيئًا عن صورتك. لا يوجد طلب لفحصه، ولا تخزين مؤقت يحتفظ بها، ولا سجل يمكن البحث فيه.
على مسارات جانب الخادم:
- تنزيل Compress يرى بايتات الصورة طوال مدة الترميز (بضع مئات من الملي ثانية عادةً)، ويحتفظ بإدخال ذاكرة تخزين مؤقت عنوانه المحتوى طوال مدة TTL، وهذا كل شيء. لا تُفهرَس ذاكرة التخزين المؤقت بالمستخدم أو عنوان IP أو اسم الملف أو أي معرّف يمكّننا من تحديد صورك. لا نُسجَّل محتوى الصور. تخدم خدمة الترميز المستأجرَين ذاتهما اللذين كانت تخدمهما v1 قبل التحويل، مع CORS وحدود معدّل وعناوين URL موقَّعة بـHMAC مخصَّصة لكل مستأجر.
- Remove Background يرى الصورة طوال مدة رفع التدريج ومكالمة التقطيع (1-3 ثوانٍ إجمالًا عادةً)، بعدها يُحذف النسخة المؤقتة بقاعدة دورة حياة R2. لا نستدعي أي مزوّد نموذج خارجي ببايتات صورتك — يعمل نموذج BiRefNet داخل بنية Cloudflare التحتية ذاتها، لا على واجهة برمجة خارجية بأسلوب remove.bg / fal.ai / Replicate.
على كل مسار، يسجّل مزوّد التحليلات لدينا (Cloudflare Web Analytics) بيانات مجمّعة لمشاهدات الصفحة — URL والبلد وعائلة المتصفح وأهم مقاييس الويب. لا كوكيز، لا معرّفات دائمة، لا شيء مرتبط بشخص بعينه.
بالنسبة للأدوات التي تنزّل وحدة WebAssembly عند أول استخدام (مفكك ترميز HEIC، نموذج ISNet ONNX)، يرى مزوّد الاستضافة لدينا أن شخصًا ما أحضر الوحدة — تمامًا كما يرى أحدهم يحضر ملف CSS. الوحدة نفسها لا تحتوي على أي معلومات عن صورتك.
جرد البيانات الكامل موجود في سياسة الخصوصية.
المجموعة التقنية
لأصحاب الفضول:
- Astro — مولّد المواقع الثابتة. تُسلَّم كل صفحة كـHTML خالص مع “جُزُر” JavaScript محسَّنة تدريجيًا فقط حيث تسكن الأدوات التفاعلية.
- CSS خالص مع خصائص مخصصة — بلا Tailwind، بلا CSS-in-JS. نظام التصميم بالكامل ملف
tokens.cssواحد. canvas.toBlob/<canvas>— ترميز JPEG وPNG وWebP وAVIF (المدعوم من المتصفح) في معاينة Compress، وكل عمليات Circle Crop.- Cropper.js — طبقة تفاعل مستطيل القص.
- ONNX Runtime Web — يُشغّل بديل ISNet عبر WebAssembly لأداة Remove Background.
- Cloudflare Pages — يستضيف البناء الثابت ويخدمه من الحافة.
- Cloudflare Workers + R2 +
cf.image.segment(BiRefNet) — مسار Remove Background الافتراضي. - Fastify +
sharp 0.34+libvips 8.17على Node 24 — خدمة تنزيل Compress علىapi.araluma.com، على خادم VPS تديره Hostinger في ألمانيا. - Cloudflare Web Analytics — إحصاء مجمّع لمشاهدات الصفحة بلا كوكيز.
دعم المتصفحات
تعمل جميع الأدوات على الإصدار الحالي والسابق من Chrome وFirefox وSafari وEdge — سطح المكتب والجوال. يستخدم الموقع التعزيز التدريجي: حيثما دعم المتصفح واجهة برمجية أحدث (مثل showSaveFilePicker وOffscreenCanvas)، استخدمناها؛ وحيثما لا يدعمها، رجعنا إلى المكافئ القديم. لا يوجد حاجز “متصفحك غير مدعوم”.
المتطلبات الصارمة الوحيدة هي JavaScript (لأي أداة) واتصال شبكي (فقط عند استخدام تنزيل Compress أو مسار Remove Background الافتراضي — أما المسارات الأخرى فتعمل دون اتصال بالكامل بعد أول تحميل للصفحة).
أسئلة
هل ثمة شيء لم نغطّه؟ راسلنا على support@araluma.com. الأسئلة التقنية مرحّب بها.