Как работи Araluma

Технически подробности на това какво всеки инструмент прави, където се изпълнява и как можете да го проверите сами.

Накратко

Araluma използва хибридна архитектура: повечето инструменти работят изцяло във вашия браузър без никакво качване, а шепа от тях насочват една мрежова заявка през собствената ни инфраструктура, когато браузърът не може да достигне нужното качество, винаги с невидим резервен вариант от страната на клиента. Казваме ви на кой път сте, във всеки инструмент и на тази страница.

Таблицата по-долу е представителна, не изчерпателна (каталогът продължава да расте). Тя показва по един пример за всеки вид път:

Примерен инструментКъде се извършва работата
Кръгло изрязване (само в браузъра)100% във вашия браузър, Canvas API. Без качване, работи офлайн.
Преглед на компресия (само в браузъра)100% във вашия браузър, canvas.toBlob. Без качване. Плъзгачът остава мигновен.
Изтегляне на компресия (докосва сървъра)Едно отиване и връщане до нашата услуга на api.araluma.com (sharp плюс libvips на VPS в Германия), с резервен вариант в браузъра.
Премахване на фон (докосва сървъра)Едно отиване и връщане до Cloudflare Worker, който изпълнява BiRefNet върху периферни графични процесори, с резервен вариант WebAssembly във вашия браузър.

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

Можете да проверите твърденията за работа само в браузъра за около 30 секунди: отворете DevTools, отидете в панела Мрежа, изчистете дневника, после използвайте който и да е инструмент само за браузъра. Ще видите нула заявки, носещи байтовете на вашето изображение, да напускат страницата. За инструментите, които докосват сървъра, ще видите точно по едно качване на операция, към назованите крайни точки по-горе.

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

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

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

  • Компресия, при финалното изтегляне. sharp плюс libvips от страната на сървъра произвежда файлове с 10 до 15% по-малки байт за байт от браузърните кодери при същото визуално качество и излага настройка на скоростта и цветността на AVIF, която браузърът не предлага. Плъзгачът и прегледът все пак работят във вашия браузър, така че итерацията остава мигновена. Само натискането на „Изтегляне“ минава през нашата услуга.
  • Премахване на фон с изкуствен интелект, по пътя по подразбиране. Моделът BiRefNet, който изпълнява сегментирането на изображения на Cloudflare (същата архитектура като remove.bg), се нуждае от истински графичен процесор, за да приключи за секунда или две. Резервният вариант в браузъра (ISNet чрез ONNX Runtime плюс WebAssembly) работи, но отнема много повече и произвежда видимо по-грубо изрязване по косата, козината и фините ръбове.
  • Уголемяване с изкуствен интелект, по пътя по подразбиране. Свръхразделителната способност в облака възстановява детайл, който повторна извадка от страната на браузъра не може, с резервен вариант в браузъра, когато услугата не е достъпна.

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

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

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

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

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

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

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

  • Инструменти само за браузъра (изрязване, преоразмеряване, прегледът и плъзгачът за компресия, сглобяването на PDF и повечето преобразувания на формат). Те се изпълняват като пикселни преобразувания на Canvas и повторни кодирания canvas.toBlob точно на вашата машина. Интерактивната рамка за изрязване използва Cropper.js. Нищо не напуска страницата.
  • Изтегляне на компресия. Когато натиснете „Изтегляне“, изображението отива веднъж до api.araluma.com (услуга на Fastify върху Hostinger VPS в Германия, Node плюс sharp и libvips, същите C библиотеки, които Squoosh използва по сървърния си път). То се прекодира с параметрите, които сте задали в прегледа, и байтовете се връщат обратно. Услугата държи изолиран по наемател, адресиран по съдържание кеш (хеш на входните байтове плюс параметрите), така че повторното изтегляне на същото изображение със същите настройки възпроизвежда кеширани байтове. Този кеш не се индексира по вас, вашия IP или името на файла. Ако услугата е недостъпна, инструментът прибягва до blob-а за преглед в браузъра.
  • Премахване на фон, облачен път по подразбиране. Изображението се качва веднъж в Cloudflare Worker, поставя се в частен R2 контейнер, обработва се от сегментирането на изображения на Cloudflare, изпълняващо модела BiRefNet върху периферни графични процесори, и изрязването се връща обратно. Поставеният обект се изтрива в рамките на час от правило за жизнен цикъл на R2, независимо от изхода. Типична снимка приключва за секунда или две. Дневни ограничения на IP и на размера на качването поддържат безплатното ниво устойчиво.
  • Премахване на фон, резервен вариант WebAssembly. Ако Worker-ът е недостъпен (мрежата ви падне, строга защитна стена го блокира, дневната квота е пълна или файлът е твърде голям за облачния лимит), инструментът тихо превключва към модела ISNet, изпълняван локално чрез ONNX Runtime Web и WebAssembly. Първото изпълнение изтегля модела и отнема по-дълго, следващите изпълнения са по-бързи. Без качване по този път, проверимо в DevTools.
  • Уголемяване с изкуствен интелект. Пътят по подразбиране изпраща изображението веднъж до облачна услуга за свръхразделителна способност и връща обратно увеличения резултат, с резервен вариант от страната на браузъра, ако услугата не може да бъде достигната.

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

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

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

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

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

  1. Отворете Araluma в нов раздел и отворете DevTools, после панела Мрежа.
  2. Използвайте инструмент само за браузъра като Кръгло изрязване или плъзгача за преглед на компресия. Ще видите заявки само за HTML, CSS, JS и шрифтове, плюс съответните модули WebAssembly при първа употреба. Никоя заявка няма да носи байтовете на вашето изображение.
  3. Сега използвайте инструмент, който докосва сървъра като Изтегляне на компресия или Премахване на фон. Ще видите точно един POST, носещ изображението ви до назованата крайна точка, и един отговор, връщащ се с резултата. Задръжте курсора върху която и да е заявка, за да прочетете нейния размер и време.

Колоната „Initiator“ ви казва кой скрипт е задействал всяка заявка, а колоната „Type“ ви казва какво е изпратено. Не крием нито едното, нито другото.

Метод 2. Използвайте инструментите офлайн

  1. Заредете която и да е страница с инструмент на Araluma. Пуснете Премахване на фон веднъж върху малко изображение, за да се кешира моделът ISNet в браузъра.
  2. Отворете DevTools, отидете в Мрежа и отметнете Офлайн (или изключете Wi-Fi).
  3. Презаредете страницата. Статичните ресурси са кеширани, така че тя все пак се зарежда.
  4. Опитайте инструментите:
    • Инструментите само за браузъра продължават да работят. Никога не са се нуждаели от мрежата.
    • Изтегляне на компресия прибягва до blob-а за преглед в браузъра (малко по-малко ефективно кодиране, но работещо).
    • Премахване на фон прибягва до модела ISNet WebAssembly и работи без никаква изходяща заявка.

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

Какво виждаме и какво не

По пътищата само за браузъра не виждаме нищо за вашето изображение. Няма заявка, която да разгледаме, няма кеш, който да го съхрани, няма ред в дневник, който да претърсим с grep.

По пътищата, които докосват сървъра:

  • Изтегляне на компресия вижда байтовете на изображението за времетраенето на кодирането (обикновено няколкостотин милисекунди), пази запис в адресиран по съдържание кеш за неговия TTL и това е всичко. Кешът не се индексира по потребител, IP, име на файл или какъвто и да е идентификатор, който бихме могли да използваме, за да открием „вашите“ изображения. Не записваме съдържанието на изображението. Услугата за кодиране се споделя между същите наематели, които v1 обслужваше преди преминаването, с CORS на наемател, ограничения на честотата и канонични URL адреси, подписани с HMAC.
  • Премахване на фон вижда изображението за времетраенето на качването за поставяне и извикването на сегментирането (обикновено секунда или две), след което поставеното копие се изтрива от правилото за жизнен цикъл на R2. Никога не предаваме вашите байтове на доставчик на модел от трета страна. Моделът BiRefNet работи в собствената инфраструктура на Cloudflare, не във външен API в стил 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 за Премахване на фон.
  • Cloudflare хоства статичната компилация и я обслужва от периферията, и изпълнява Workers, R2 и конвейера за сегментиране на изображения (BiRefNet) зад пътя по подразбиране за Премахване на фон.
  • Fastify със sharp и libvips на Node, услугата за изтегляне на Компресия на api.araluma.com, на Hostinger VPS в Германия.
  • Cloudflare Web Analytics, обобщени, без бисквитки броеве на прегледите на страници.

Поддръжка на браузъри

Всеки инструмент работи на текущата и предишната версия на Chrome, Firefox, Safari и Edge, на настолен компютър и на мобилно устройство. Сайтът използва прогресивно обогатяване: където даден браузър поддържа по-нов API (например showSaveFilePicker или OffscreenCanvas), го използваме, а където не го поддържа, прибягваме до по-стария еквивалент. Няма стена „браузърът ви не се поддържа“.

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

Въпроси

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