Как работи 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 на Edge GPU на Cloudflare, с резервен вариант WebAssembly в браузъра Ви при недостъпност на облака.

Изрязването, преоразмеряването, преобразуването на формат (без кодирането в AVIF) и прегледът на Compress работят изцяло в браузъра Ви. Премахването на фон, изтеглянето на Compress, увеличаването с ИИ, кодирането в AVIF и PDF с няколко изображения насочват по една заявка и се връщат към браузъра при недостъпност на облака.

Можете да проверите твърденията за страната на клиента за около 30 секунди: отворете DevTools → Network, изчистете журнала, след това използвайте инструмент само в браузъра като Circle Crop или плъзгача за преглед на Compress, ще видите нула заявки, пренасящи байтовете на Вашето изображение извън страницата. За инструментите, които допират сървър, ще видите точно едно качване на операция, до посочените endpoints.

Защо хибридно

Повечето онлайн инструменти за изображения са в едната крайност: качи-всичко-на-сървър (чакате двоен трансфер и операторът пази файла Ви) или всичко-в-браузъра (плащате с качество и скорост при стъпките за кодиране или ИИ). Нито едната крайност печели навсякъде.

Избрахме страната на клиента там, където браузърите вече са отлични, елементът <canvas> се справя с изрязването, въртенето, преоразмеряването и предварителното кодиране с загуби в JPG/WebP, и страната на сървъра там, където браузърът измеримо губи:

  • Компресиране на изображения, при финалното изтегляне. Сървърните sharp + libvips 8.17 произвеждат файлове с 10 до 15% по-малки байт за байт от браузърните кодеци при същото визуално качество, и дават достъп до настройките за скорост и хрома на AVIF и до JPEG XL изход, които браузърът не предлага. Плъзгачът и прегледът все така работят в браузъра Ви, така че итерацията остава мигновена, само натискането на „Изтегли” преминава през нашия сървис.
  • Премахване на фон с ИИ и увеличаване с ИИ, по стандартния маршрут. Моделите (BiRefNet за сегментация, свръхрезолюция за увеличаване) изискват реален GPU, за да завършат за секунди. Резервните варианти в браузъра работят, но са по-бавни и дават видимо по-грубо изрязване при коса, косъм и фини ръбове.
  • Кодиране в AVIF, при преобразуването. Вграденият в браузъра AVIF кодер е бавен на някои устройства, така че AVIF изходът насочва една заявка до Worker-а за компресиране, с резервно кодиране в основната нишка на браузъра.

Цената, която приемаме за сървърна обработка по тези маршрути, е една заявка на операция. Цената, която избягваме, като оставаме на страната на клиента навсякъде другаде, е таксата за заявка при частите от работния процес с най-бърза итерация.

Конвейерът стъпка по стъпка

1. Избирате файл

Чрез файловия избор, плъзгане и пускане или поставяне, браузърът предава на JavaScript обект File. JavaScript чете байтовете с FileReader или Blob.arrayBuffer(). На никакъв етап от тази стъпка файлът не се изпраща по мрежата, независимо кой инструмент използвате.

2. Браузърът декодира изображението

Съвременните браузъри нативно декодират JPG, PNG, WebP, GIF и AVIF. Използваме createImageBitmap(), за да преобразуваме суровите байтове в битмап, с който GPU може да работи, извън основната нишка. За HEIC в браузъри, които не го декодират нативно, прибягваме до WebAssembly декодер, работещ локално в браузъра Ви.

3. Инструментът върши работата си, тук маршрутите се разделят

  • Инструменти само в браузъра (изрязване, преоразмеряване, преобразуване на формат в PNG/JPEG/WebP, прегледът на Compress). Пикселна трансформация Canvas 2D или WebAssembly кодек прекодира битмапа локално. Резултатът е готов без никакво качване. 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 на Edge GPU на Cloudflare, и изрязаното изображение се предава поточно обратно. Временно съхраненият R2 обект се изтрива в рамките на един час от R2 lifecycle правило, независимо от резултата. Типична снимка завършва за 1 до 3 секунди. Дневни ограничения по IP и 5 МБ ограничение за качване поддържат безплатния режим устойчив.
  • Други инструменти с облачна поддръжка (увеличаване с ИИ, кодиране в AVIF, PDF с няколко изображения) следват същата форма: една заявка до именувана инфраструктура (облачно image API за свръхрезолюция, Worker-а за компресиране за кодиране в AVIF, нашия VPS сървис за PDF с няколко изображения), резултатът се предава поточно обратно, и прозрачен резервен вариант в браузъра, ако тази заявка се провали.
  • Резервен вариант WebAssembly. Ако съответният облачен маршрут е недостъпен (мрежата Ви пропада, зад строга защитна стена сте, дневната квота е изчерпана или файлът надхвърля облачния лимит), инструментът прозрачно превключва към локален модел или кодек, работещ в браузъра Ви, например модела ISNet за премахване на фон чрез ONNX Runtime Web с WebAssembly. Първото изпълнение изтегля модела и е по-бавно, следващите са по-бързи. Без качване по тези резервни маршрути, можете да го проверите в DevTools.

4. Изтегляте резултата

Изходният битмап се кодира в Blob, обвива се в object URL и се предлага на стандартния диалог за запис на файл на браузъра Ви. Файлът се появява на диска Ви.

Как да го проверите сами

Изберете какъвто метод предпочитате:

Метод 1. Наблюдавайте раздела Network

  1. Отворете RoundCut в нов раздел и отворете DevTools → Network.
  2. Използвайте инструмент само в браузъра, Circle Crop или плъзгача за преглед на Compress. Ще видите заявки само за HTML/CSS/JS/шрифтове, плюс съответните WebAssembly модули при първа употреба. Никоя заявка няма да пренася байтовете на Вашето изображение.
  3. Сега използвайте инструмент, който допира сървър, Compress → Изтегляне или 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 вижда байтовете на изображението за времетраенето на кодирането (обикновено няколкостотин милисекунди), пази запис в кеш, адресиран по съдържание, за TTL на кеша, и толкова. Кешът не е индексиран по потребител, IP, файлово име или какъвто и да е идентификатор, с който бихме могли да открием „Вашите” изображения. Не регистрираме съдържание на изображения. Сървисът за кодиране е споделен между същите два наематели, обслужвани от v1 преди прехода, с CORS, ограничения на заявките и HMAC-подписани канонични URL адреси за всеки наемател.
  • Remove Background и другите ИИ маршрути виждат изображението за времетраенето на временното качване и извикването на модела (обикновено няколко секунди), след което временно съхраненото копие се изтрива от R2 lifecycle правило. Моделът BiRefNet работи вътре в инфраструктурата на самата Cloudflare, не на външен API от вида на remove.bg / fal.ai / Replicate.

По всеки маршрут нашият доставчик на анализи (Cloudflare Web Analytics) записва агрегирани данни за посещения на страниците. URL, държава, семейство браузъри, Core Web Vitals. Без бисквитки, без постоянни идентификатори, нищо обвързано с конкретен човек.

За инструменти, изтеглящи WebAssembly модул при първа употреба (HEIC декодерът, ONNX моделът ISNet), нашият хостинг доставчик вижда, че някой е изтеглил модула, по същия начин, по който вижда изтегляне на CSS файл. Самият модул не съдържа никаква информация за Вашето изображение.

Пълният инвентар на данните е в нашата политика за поверителност.

Технологичният стек

За любопитните:

  • Astro, генераторът на статичен сайт. Всяка страница се доставя като чист HTML с прогресивно подобрени JavaScript „острови” само там, където живеят интерактивните инструменти.
  • Vanilla 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, хоства статичния build, обслужва го от edge-а.
  • 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, настолни и мобилни. Сайтът използва прогресивно подобряване: където браузърът поддържа по-нов API (напр. showSaveFilePicker, OffscreenCanvas), го използваме, където не поддържа, прибягваме до по-стария еквивалент. Няма стена „браузърът Ви не се поддържа”.

Единствените твърди изисквания са JavaScript (за всеки инструмент) и мрежова връзка (само при използване на инструмент с облачна поддръжка по стандартния му маршрут, другите инструменти само в браузъра работят напълно офлайн след първото зареждане на страницата).

Въпроси

Нещо, което не сме покрили? Пишете ни на support@roundcut.app. Техническите въпроси са добре дошли.