Как работает Araluma

Где работает каждый инструмент, зачем некоторым нужен сервер и как убедиться в этом в своём браузере.

Два вида инструментов

Каждый инструмент Araluma относится к одной из двух групп. Браузерные инструменты читают, редактируют и сохраняют ваш файл на вашем собственном устройстве. Серверные инструменты загружают файл, обрабатывают его на наших серверах или у поставщика сервисов изображений и возвращают результат. У серверных инструментов также есть запасной план, который завершает работу в вашем браузере, если серверы недоступны.

ИнструментТолько в браузереС серверомЗапасной план при сбое серверов
«Обрезать фото по кругу», «Обрезать изображение», «Изменить размер»ВсегдаНикогдаНе нужен
Конвертация (один файл, результат в PNG, JPG или WebP)ДаНетНе нужен
Конвертация (результат в AVIF, либо два файла и больше)НетДаКодировщик в браузере
«JPG в PDF» (одно изображение)ДаНетНе нужен
«JPG в PDF» (два изображения и больше)НетДаСборка в браузере
«Сжать изображение»Только SVG и очень большие пакетыДаСжатие в браузере
«Удалить фон»НетДа, сначала Cloudflare, затем ImageKitМодель ИИ, работающая в вашем браузере
«Увеличить изображение»НетДа, сначала Cloudflare, затем ImageKitПередискретизация в браузере

Ещё один случай касается всех инструментов: при создании ссылки для общего доступа или сохранении результата в Dropbox файл с результатом хранится около двух часов, чтобы ссылку можно было открыть.

Почему бы не делать всё в браузере?

Браузеры отлично справляются с геометрией. Обрезка, поворот, масштабирование и сохранение изображения в распространённых форматах занимают на устройстве доли секунды, без ожидания сети, поэтому такие инструменты никогда его не покидают.

Другие задачи всё же лучше выполнять на сервере:

  • Сжатие. Серверные кодировщики на основе libvips дают заметно меньшие файлы, чем встроенные в браузеры кодировщики, при том же визуальном качестве, и открывают настройки AVIF, которых в браузерах нет.
  • Результат в AVIF. Кодирование AVIF в браузере на телефоне идёт медленно и требует много памяти, поэтому конвертация в AVIF использует тот же сервер.
  • Пакеты и многостраничные PDF. Очередь из десятков изображений застопорила бы телефон. Сервер обрабатывает их вместе и возвращает один ZIP или PDF.
  • Удаление фона и увеличение. В обоих случаях используются модели ИИ, которым нужен GPU, чтобы ответить за секунды. Запасной план в браузере работает, но медленнее, и края у волос и шерсти получаются грубее.

Что происходит с файлом, шаг за шагом

  1. Вы выбираете файл. Выбор, перетаскивание или вставка дают странице локальную ссылку на файл. На этом этапе ничего не отправляется.
  2. Браузер открывает его. JPG, PNG, WebP, GIF и AVIF декодируются встроенными средствами. Фото HEIC с iPhone декодирует небольшой модуль, работающий на странице.
  3. Выполняется работа. Браузерные инструменты редактируют пиксели на холсте (canvas) и тут же кодируют результат. Серверные инструменты загружают файл по HTTPS во временное хранилище Cloudflare R2 или напрямую в Cloudflare Worker, а задание выполняется на нашем сервере в Сан-Паулу (сжатие, конвертация, PDF) или в сервисах изображений Cloudflare и ImageKit (удаление фона, увеличение). «Сжать изображение» может начать загрузку через несколько секунд после добавления файлов, чтобы результат был готов к моменту нажатия кнопки.
  4. Вы получаете результат. Готовый файл передаётся в обычную загрузку вашего браузера. Результаты, созданные на сервере, лежат во временном хранилище около двух часов (на экране скачивания в «Сжать изображение» их можно удалить сразу), а затем удаляются автоматически.

В политике конфиденциальности приведены полная таблица сроков хранения и список поставщиков.

Проверьте в своём браузере

Панель «Сеть». Откройте инструменты разработчика (F12 в большинстве браузеров на компьютере), выберите вкладку Network (Сеть) и очистите её. Запустите «Обрезать фото по кругу», «Обрезать изображение» или «Изменить размер»: вы увидите загрузку ресурсов страницы и ни одного запроса с вашим изображением. Затем запустите «Сжать изображение» или «Удалить фон»: появится запрос на загрузку файла, а за ним скачивание результата.

Проверка без сети. Откройте браузерный инструмент, включите режим полёта или отметьте «Offline» на вкладке Network и снова воспользуйтесь им. Он продолжит работать, потому что сеть ему никогда не была нужна. Серверные инструменты вместо этого переключатся на запасной план, и так тоже можно увидеть, где выполняется каждый шаг.

Что мы видим и чего не видим

От браузерных инструментов мы ничего не получаем о вашем изображении, потому что ни один запрос его не передаёт.

В случае серверных инструментов файл существует в нашей инфраструктуре только на время выполнения задания и в течение сроков хранения, указанных в политике конфиденциальности. Аккаунтов нет, поэтому загруженный файл не привязан ни к имени, ни к профилю. Мы не просматриваем загруженные файлы и не используем их для обучения моделей.

На каждой странице мы записываем анонимные события использования (инструмент, шаг, время, ошибки, страна, тип устройства), чтобы находить ошибки и медленные места. Сами мы не устанавливаем межсайтовых отслеживающих cookie. Рекламные cookie, которые Google использует на страницах инструментов, и способы отказаться от них описаны в политике конфиденциальности. Когда модель ИИ или декодер загружаются в ваш браузер, наш хостинг видит, что файл был запрошен, так же как видит запрос таблицы стилей, и ничего не узнаёт о вашем изображении.

На чём это построено

  • Astro, который отдаёт каждую страницу как обычный HTML и добавляет JavaScript только там, где он нужен инструменту.
  • Обычный CSS с дизайн-токенами, без CSS-фреймворка.
  • Canvas и кодеки на WebAssembly для инструментов, работающих в браузере.
  • ONNX Runtime Web, который запускает модель удаления фона на вашем устройстве, когда облачный путь недоступен.
  • Cloudflare для хостинга, Workers, хранилища R2 и моделей изображений, на которых основаны удаление фона и увеличение.
  • Сервис на Node.js с sharp и libvips на сервере Hostinger в Сан-Паулу (Бразилия) для сжатия, конвертации и создания PDF.

Поддерживаемые браузеры

Инструменты работают в текущей и предыдущей версиях Chrome, Edge, Firefox и Safari, на компьютерах и телефонах. Если браузер предлагает более новую возможность, инструмент её использует, а если нет, в дело вступает более старый способ, так что ни один браузер не остаётся без поддержки. Для всех инструментов требуется JavaScript, а подключение к сети нужно только серверным.

Остались вопросы?

Технические вопросы можно присылать на support@araluma.com.