كيف يعمل RoundCut

تفاصيل تقنية حول ما يفعله كل أداة، وأين تعمل، وكيف يمكنك التحقق من ذلك بنفسك.

الإجابة المختصرة

يستخدم RoundCut بنية هجينة: تعمل معظم الأدوات بالكامل داخل متصفحك دون أي رفع، وتوجّه قلّة منها طلب شبكة واحدًا عبر بنيتنا التحتية حين لا يستطيع المتصفح مجاراة الجودة، مع وجود بديل من جهة العميل غير مرئي دائمًا. نُخبرك بالمسار الذي أنت عليه، في كل أداة وعلى هذه الصفحة.

الجدول أدناه تمثيلي لا شامل (تُشحن أدوات جديدة بانتظام). وهو يعرض مثالًا واحدًا لكل نوع من المسارات:

مثال على أداةأين يجري العمل
Circle Crop (داخل المتصفح فقط)100% داخل متصفحك، Canvas API. بلا رفع، يعمل دون اتصال.
معاينة Compress (داخل المتصفح فقط)100% داخل متصفحك، canvas.toBlob. بلا رفع. يظل شريط التمرير فوريًّا.
التنزيل النهائي لـ Compress (يلامس الخادم)رحلة ذهاب وعودة واحدة إلى خدمتنا على api.roundcut.com.br (Fastify + sharp + libvips على خادم VPS في ألمانيا)، مع بديل في المتصفح.
Remove Background (يلامس الخادم)رحلة ذهاب وعودة واحدة إلى Cloudflare Worker يُشغّل BiRefNet على وحدات معالجة الرسوميات الطرفية لـ Cloudflare، مع بديل WebAssembly في متصفحك عند تعذّر الوصول إلى السحابة.

الاقتصاص وتغيير الحجم وتحويل الصيغ (عدا ترميز AVIF) ومعاينة Compress، كلها تعمل بالكامل داخل متصفحك. أما إزالة الخلفية والتنزيل النهائي لـ Compress والتكبير بالذكاء الاصطناعي وترميز AVIF وملف PDF متعدد الصور، فكلٌّ منها يوجّه طلبًا واحدًا ويعود إلى المتصفح عند تعذّر الوصول إلى السحابة.

يمكنك التحقق من ادّعاءات جهة العميل في نحو 30 ثانية: افتح DevTools ثم Network، وامسح السجل، ثم استخدم أداة داخل المتصفح فقط مثل Circle Crop أو شريط معاينة Compress، لن ترى أي طلب يحمل بايتات صورتك يغادر الصفحة. أما الأدوات التي تلامس الخادم فسترى لها عملية رفع واحدة بالضبط لكل عملية، إلى نقاط نهاية معروفة بالاسم.

لماذا الهجين

تقف معظم أدوات الصور على الإنترنت عند أحد الطرفين: رفع-كل-شيء-إلى-الخادم (تنتظر رحلات الذهاب والعودة ويحتفظ المشغّل بملفك)، أو كله-داخل-المتصفح (تدفع ثمنًا في الجودة والسرعة على خطوات الترميز والذكاء الاصطناعي). ولا أحد من الطرفين يفوز في كل مكان.

اخترنا جهة العميل حيث المتصفحات ممتازة أصلًا، فعنصر <canvas> يتولّى الاقتصاص والتدوير وتغيير الحجم وترميز المعاينة الضائع في JPG/WebP، واخترنا جهة الخادم حيث ما زال المتصفح يخسر بشكل قابل للقياس:

  • ضغط الصور، على التنزيل النهائي. يُنتج sharp + libvips 8.17 من جهة الخادم ملفات أصغر بنسبة 10-15% بايتًا مقابل بايت من مرمّزات المتصفح عند الجودة البصرية نفسها، ويتيح ضبط سرعة/لون AVIF ومخرجات JPEG XL التي لا يكشفها المتصفح. ما زال شريط التمرير/المعاينة يعمل داخل متصفحك لتظل التجربة فورية، ونقرة “تنزيل” وحدها هي التي تمرّ عبر خدمتنا.
  • إزالة الخلفية بالذكاء الاصطناعي والتكبير بالذكاء الاصطناعي، على المسار الافتراضي. تحتاج النماذج (BiRefNet للتقطيع، والدقة الفائقة للتكبير) إلى وحدة معالجة رسوميات حقيقية لتنتهي في ثوانٍ. تعمل البدائل داخل المتصفح لكنها أبطأ وتُنتج نتيجة أخشن بصريًّا على الشعر والفراء والحواف الدقيقة.
  • ترميز AVIF، على التحويل. مرمّز AVIF داخل المتصفح بطيء على بعض الأجهزة، لذا يوجّه مخرج AVIF طلبًا واحدًا إلى Worker الضغط، مع ترميز في الخيط الرئيسي للمتصفح كبديل.

الثمن الذي نقبله مقابل العمل من جهة الخادم على تلك المسارات هو رحلة ذهاب وعودة واحدة لكل عملية. والثمن الذي نتجنّبه بالبقاء على جهة العميل في كل مكان آخر هو رسم رحلة الذهاب والعودة على أجزاء سير العمل الأكثر تكرارًا.

خط الأنابيب، خطوة بخطوة

1. تختار ملفًا

عبر منتقي الملفات، أو السحب والإفلات، أو اللصق، يسلّم المتصفح إلى JavaScript كائن File. يقرأ JavaScript البايتات باستخدام FileReader أو Blob.arrayBuffer(). لا يُرسل الملف عبر الشبكة في أي لحظة من هذه الخطوة، أيًّا كانت الأداة التي تستخدمها.

2. يفكّ المتصفح ترميز الصورة

تفكّ المتصفحات الحديثة ترميز JPG وPNG وWebP وGIF وAVIF أصلًا. نستخدم createImageBitmap() لتحويل البايتات الخام إلى bitmap يمكن لوحدة معالجة الرسوميات العمل عليها، خارج الخيط الرئيسي. أما HEIC على المتصفحات التي لا تفكّ ترميزه أصلًا، فنعود إلى مفكّك ترميز WebAssembly يعمل محليًّا داخل متصفحك.

3. تؤدّي الأداة عملها، وهنا تتفرّع المسارات

  • الأدوات داخل المتصفح فقط (الاقتصاص، وتغيير الحجم، وتحويل الصيغ إلى PNG/JPEG/WebP، ومعاينة Compress). يُعيد تحويل بكسل Canvas 2D أو codec من WebAssembly ترميز الـ bitmap محليًّا. تكون النتيجة جاهزة دون أي رفع. يتولّى Cropper.js إطار الاقتصاص التفاعلي لأدوات الاقتصاص، ويتولّى canvas.toBlob إعادة ترميز المعاينة. بالكامل داخل متصفحك.
  • Compress، التنزيل. عند نقرك “تنزيل”، تُرسل الصورة مرة واحدة إلى api.roundcut.com.br (خدمة Fastify تعمل على خادم VPS في ألمانيا يشغّله Hostinger، Node 24 + sharp 0.34 + libvips 8.17، وهي مكتبات C نفسها التي يستخدمها Squoosh على مسار خادمه). يُعاد ترميزها بالمعاملات نفسها التي ضبطتها في المعاينة، وتُبثّ البايتات عائدة إلى متصفحك. تحتفظ الخدمة بذاكرة مؤقتة معزولة لكل مستأجر ومعنونة بالمحتوى (تجزئة لبايتات المدخل والمعاملات) بحدّ أقصى 500 ميغابايت، بحيث تُعيد تنزيل الصورة نفسها بالإعدادات نفسها تشغيل البايتات المخزّنة، والذاكرة المؤقتة ليست مفهرسة وفقًا لك أو لـ IP أو لاسم الملف. وإن تعذّر الوصول إلى الخدمة، تعود الأداة إلى blob المعاينة داخل المتصفح.
  • Remove Background، المسار السحابي الافتراضي. تُرفع الصورة مرة واحدة إلى Cloudflare Worker، وتُجهَّز في دلو R2 خاص، وتُعالَج عبر تحويل cf.image.segment من Cloudflare الذي يُشغّل نموذج BiRefNet على وحدات معالجة الرسوميات الطرفية لـ Cloudflare، ثم يُبثّ القصّ عائدًا. يُحذف كائن R2 المُجهَّز خلال ساعة واحدة بقاعدة دورة حياة R2، أيًّا كانت النتيجة. تنتهي صورة نموذجية في 1-3 ثوانٍ. تُبقي حدود الرفع اليومية لكل IP وحد 5 ميغابايت الفئة المجانية مستدامة.
  • الأدوات الأخرى المدعومة بالسحابة (التكبير بالذكاء الاصطناعي، وترميز AVIF، وملف PDF متعدد الصور) تتّبع الشكل نفسه: طلب واحد إلى بنية تحتية معروفة بالاسم (واجهة برمجة صور سحابية للدقة الفائقة، وWorker الضغط لترميز AVIF، وخدمة VPS لدينا لملف PDF متعدد الصور)، تُبثّ النتيجة عائدة، مع بديل داخل المتصفح غير مرئي إذا فشل ذلك الطلب.
  • بديل WebAssembly. إذا تعذّر الوصول إلى المسار السحابي المعني (انقطعت شبكتك، أو كنت خلف جدار حماية صارم، أو امتلأت الحصة اليومية، أو تجاوز الملف حد السحابة)، تنتقل الأداة دون أن تُشعرك إلى نموذج أو codec محلي يعمل داخل متصفحك، مثل نموذج إزالة الخلفية ISNet عبر ONNX Runtime Web مع WebAssembly. يُنزّل التشغيل الأول النموذج ويكون أبطأ، وتكون التشغيلات اللاحقة أسرع. بلا رفع على مسارات البديل هذه، ويمكنك التحقق من ذلك في DevTools.

4. تنزّل النتيجة

تُرمَّز bitmap المُخرَج إلى Blob، ويُغلَّف في object URL، ويُعرَض على مربّع حوار حفظ الملفات القياسي في متصفحك. يظهر الملف على قرصك.

كيف تتحقق بنفسك

اختر ما تفضّل:

الطريقة 1. راقب علامة تبويب Network

  1. افتح RoundCut في علامة تبويب جديدة وافتح DevTools ثم Network.
  2. استخدم أداة داخل المتصفح فقط، Circle Crop أو شريط معاينة Compress. سترى طلبات لـ HTML/CSS/JS/الخطوط فقط، إضافة إلى وحدات WebAssembly المعنية عند أول استخدام. لن يحمل أي طلب بايتات صورتك.
  3. الآن استخدم أداة تلامس الخادم، Compress ثم Download أو Remove Background. سترى عملية POST واحدة بالضبط تحمل صورتك، واستجابة واحدة تعود بالنتيجة. مرّر المؤشر فوق أي طلب لرؤية الحجم والتوقيت.

يخبرك عمود “Initiator” أيُّ نص برمجي أطلق كل طلب، ويخبرك عمود “Type” بما أُرسل. لا نخفي أيًّا منهما.

الطريقة 2. استخدم الأدوات دون اتصال

  1. حمّل أي صفحة أداة في RoundCut. استخدم Remove Background مرة على صورة صغيرة كي يُخزَّن نموذج ISNet داخل المتصفح في الذاكرة المؤقتة.
  2. افتح DevTools ثم Network ثم فعّل Offline (أو أطفئ الـ Wi-Fi).
  3. أعد تحميل الصفحة، فالأصول الثابتة مخزّنة في الذاكرة المؤقتة، لذا ما زالت تُحمَّل.
  4. جرّب الأدوات:
    • الأدوات داخل المتصفح فقط (Circle Crop، تغيير الحجم، معاينة Compress) تظل تعمل، فهي لم تحتج إلى الشبكة أصلًا.
    • تنزيل Compress يعود إلى blob المعاينة داخل المتصفح (ترميز أقل كفاءة قليلًا، لكنه يعمل).
    • Remove Background يعود إلى نموذج ISNet عبر WebAssembly ويعمل دون أي طلب صادر.

إذا عملت الأدوات دون اتصال (المدعومة بالسحابة متراجعة قليلًا، وتلك داخل المتصفح فقط متطابقة)، فبحكم التعريف لم يرَ أي خادم صورتك.

ما نراه، وما لا نراه

على المسارات في جهة العميل، لا نرى شيئًا عن صورتك. لا طلب لنطّلع عليه، ولا ذاكرة مؤقتة لنخزّنها فيها، ولا سطر سجل لنبحث فيه.

على المسارات في جهة الخادم:

  • خدمة الضغط وPDF ترى بايتات الصورة طوال مدة الترميز (عادةً بضع مئات من المللي ثانية)، وتحتفظ بمدخل ذاكرة مؤقتة معنون بالمحتوى طوال مدة بقاء الذاكرة المؤقتة، ولا شيء غير ذلك. الذاكرة المؤقتة ليست مفهرسة وفقًا للمستخدم أو الـ IP أو اسم الملف أو أي معرّف يمكننا استخدامه للعثور على صورك. ولا نسجّل محتوى الصور. خدمة الترميز مشتركة بين المستأجرَين نفسيهما اللذين خدمهما v1 قبل التحوّل، مع CORS لكل مستأجر، وحدود معدّل، وعناوين URL قانونية موقّعة بـ HMAC.
  • Remove Background ومسارات الذكاء الاصطناعي الأخرى ترى الصورة طوال مدة رفع التجهيز واستدعاء النموذج (عادةً بضع ثوانٍ)، وبعدها تُحذف النسخة المُجهَّزة بقاعدة دورة حياة R2. يعمل نموذج BiRefNet داخل بنية Cloudflare التحتية نفسها، لا على واجهة برمجة خارجية بأسلوب remove.bg أو fal.ai أو Replicate.

على كل مسار، يسجّل مزوّد التحليلات لدينا (Cloudflare Web Analytics) بيانات مشاهدة الصفحات بشكل إجمالي. العنوان URL، والبلد، وعائلة المتصفح، ومؤشرات Core Web Vitals. بلا ملفات تعريف، وبلا معرّفات دائمة، ولا شيء مرتبط بشخص.

أما الأدوات التي تنزّل وحدة 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، يُشغّل بديل ISNet عبر WebAssembly لـ Remove Background.
  • Cloudflare Pages، يستضيف البناء الثابت ويقدّمه من الحافة.
  • Cloudflare Workers + R2 + cf.image.segment (BiRefNet)، خط أنابيب Remove Background الافتراضي.
  • Fastify + sharp 0.34 + libvips 8.17 على Node 24، خدمة الضغط وPDF على api.roundcut.com.br، على خادم VPS من Hostinger في ألمانيا.
  • Cloudflare Web Analytics، إحصاء إجمالي لمشاهدات الصفحات بلا ملفات تعريف.

دعم المتصفحات

تعمل كل أداة على النسخة الحالية والسابقة من Chrome وFirefox وSafari وEdge، على سطح المكتب والجوّال. يستخدم الموقع التحسين التدريجي: حيثما يدعم المتصفح واجهة برمجة أحدث (مثل showSaveFilePicker أو OffscreenCanvas) نستخدمها، وحيثما لا يدعمها نعود إلى المكافئ الأقدم. ولا يوجد جدار “متصفحك غير مدعوم”.

المتطلّبان الوحيدان الصارمان هما JavaScript (لأي أداة) واتصال بالشبكة (فقط عند استخدام أداة مدعومة بالسحابة على مسارها الافتراضي، أما الأدوات داخل المتصفح فقط فتعمل بالكامل دون اتصال بعد أول تحميل للصفحة).

أسئلة

أهناك شيء لم نغطّه؟ راسلنا على support@roundcut.app. الأسئلة التقنية مرحّب بها.