Ранний нативный интерфейс Photo Editor. Редактирование и экспорт в текущей бете всё ещё тестируются.
Ранний нативный интерфейс Photo Editor. Редактирование и экспорт в текущей бете всё ещё тестируются.
← Все нативные руководства

Xodera Plugins · Bubble Native

Xodera Photo Editor Native

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

Public beta guides · Haptics instructions are in its Bubble listing

Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.

Документация проверена 6 в ноябре 2026

Практические примеры

Последовательные аватары профиля перед загрузкой

Пользователи должны выбирать, какая часть их фотографии будет отображаться в квадратном изображении профиля, вместо того чтобы принимать произвольную обрезку.

`source_url = selected profile image`; `crop_aspect = "1:1"`; `document_context = the account’s stable reference`.

Ожидайте `source_loaded`; Begin crop → Apply crop, при необходимости с Rotate или Undo. При явном сохранении Export image.

Только на `export_completed` используйте `output_uri`, `output_width`, `output_height` и `output_mime` в качестве входных данных вашего рабочего процесса загрузки файлов. Затем сохраните его надёжную ссылку в Профиле.

Если пользователь отменит действие или сработает `editor_error`, сохраните старый аватар. Очистите сессию при смене учётной записи, чтобы другой пользователь не мог увидеть черновик.

Редактирование создаёт локальную копию. Ваше приложение выбирает, как её сохранить или загрузить.

Подготовьте последовательные фотографии для маркетплейса или каталога

Различные кадрирование и изображения большого размера делают каталог неоднородным и увеличивают размер загрузки.

`source_url = selected item photo`; `crop_aspect = the app’s chosen ratio`; `export_max_dimension`, `export_format` и `export_quality` берутся из вашей политики загрузки.

Обрежьте нужную область, при необходимости Resize, затем Export image после подтверждения пользователем. Сохраните оригинальный файл/ссылку отдельно.

Проверьте `output_width`, `output_height`, `output_bytes` и `output_mime` перед тем, как ваш рабочий процесс загрузки сохранит результат. Сохраните полученную ссылку на изображение в элементе.

Если экспорт не удался или результат нарушает вашу политику загрузки, покажите `error_code` и позвольте пользователю исправить его. Не перезаписывайте предыдущее изображение элемента до подтверждения загрузки.

Редактирование создаёт локальную копию. Ваше приложение выбирает, как её сохранить или загрузить.

Создайте фокусированную копию изображения для полевого отчёта

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

`source_url = Current Report Photo’s source`; `document_context = the report/account reference`; соотношение обрезки может оставаться неограниченным.

Begin crop → Apply crop, затем используйте Undo/Redo для сравнения правок. Export image создаёт отредактированную копию; ваше приложение спрашивает, прикрепить ли эту копию к Отчёту.

Используйте `has_changes`, `can_undo`, `can_redo` и `output_uri`. После успешной загрузки сохраните оригинальные и отредактированные ссылки в отдельные поля приложения.

Cancel crop или Reset edits восстанавливают путь редактирования; отмена должна оставить оригинальное вложение отчёта без изменений.

Редактирование создаёт локальную копию. Ваше приложение выбирает, как её сохранить или загрузить.

Что работает сейчас

Public beta. Use the documented controls and actions; test supported formats, permissions and device behavior in your own native app. Browser preview does not validate native device output.

Создайте рабочий процесс

Используйте доступные ниже действия беты и протестируйте результат на целевых устройствах.

В этих примерах используются записи приложений, такие как Lesson, Message и Order. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.

  1. Установите source_url на выбранное изображение. Используйте document_context для идентификации аккаунта и редактируемой записи, поэтому изменение записи очищает предыдущее фото.

  2. После source_loaded запустите Begin crop. Выберите 1:1 для аватара, отрегулируйте обрезку и используйте Apply crop. Cancel crop оставляет изображение без изменений.

  3. При необходимости используйте Rotate, Flip или Resize. Undo и Redo перемещаются по завершённым правкам; Reset edits восстанавливает оригинальное изображение.

  4. Запустите Export image. На export_completed прочитайте output_uri, output_width, output_height и output_mime. Сохраните или загрузите эту копию, используя выбранный вами рабочий процесс сохранения файлов, затем сохраните файл в записи.

Диаграмма рабочего процесса — не скриншот приложения

Настройте один раз

Активация ключа запланирована для этого плагина. Создайте или выберите ваш проект приложения Bubble в BestPlugins → Dashboard → Plugins. Выберите Xodera Photo Editor Native, скопируйте его ключ, затем откройте Bubble → Plugins → Xodera Photo Editor Native и вставьте его в licensing_api_key. Сохраните один раз; затем используйте действия ниже. Каждый плагин в каждом проекте имеет свой собственный ключ.

Сначала выберите или сделайте снимок в вашем приложении. Передайте редактору полученный читаемый адрес изображения. Разрешения на камеру и фототеку принадлежат используемому вами селектору.

Настройте один раз
  1. Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
  2. Выберите этот плагин и скопируйте его ключ проекта.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
  5. In the dashboard, review and confirm the 7-day card trial for this plugin. It then costs US$1.50/month per app project, including development and production. Cancel before the trial ends to avoid the first charge.
Установка и подписка

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Сохраните результат в вашем приложении

Сохраните загруженное или постоянно сохранённое изображение в Profile.image или в поле вложения. output_uri — временный файл на устройстве, поэтому сначала сохраните этот файл выбранным вами способом. Затем сохраните output_width, output_height и output_mime как метаданные. Сохраните оригинальное изображение, если нужны обе версии.

Сбой, отмена и восстановление

На source_load_failed или editor_error покажите error_code и предложите Load source. Cancel operation прекращает принимать незавершённый результат; подождите до is_busy=no перед началом следующего редактирования. Clear session очищает редактор, а не изображение, уже сохранённое где‑то ещё.

Возможности и ограничения

Экспорт JPEG и PNG; качество 0–1; максимальная сторона вывода 1–4096 пикселей. Ввод: до 15 MiB и 20 мегапикселей. До 20 завершённых правок. Варианты обрезки: свободная, 1:1, 4:3, 3:4 и 16:9. Нет встроенной камеры, фильтров, текстовых наложений, коррекции перспективы, экспорта WebP или автоматической загрузки.

Настройки, действия и результаты

Используйте эти имена в Bubble. Планируемые функции отмечены отдельно.

Доступные настройки бета-версии

Настройки элемента

source_url · textdocument_context · textis_active · yes_nodisabled · yes_noshow_controls · yes_nocrop_aspect · textexport_format · textexport_quality · numberexport_max_dimension · numberallow_upscale · yes_noui_text_json · textlanguage · text

Состояния

editor_status · textis_busy · yes_nohas_image · yes_nohas_changes · yes_nocan_undo · yes_nocan_redo · yes_noimage_width · numberimage_height · numberoutput_uri · textoutput_width · numberoutput_height · numberoutput_bytes · numberoutput_mime · texterror_code · textcrop_active · yes_nocrop_rect_json · text

События

source_loadedsource_load_failededit_appliededit_undoneedit_redoneeditor_resetexport_startedexport_completedoperation_cancellededitor_error

Действия и их входные данные

Load sourceBegin cropApply cropCancel cropRotateFlipResizeUndoRedoReset editsExport imageCancel operationClear session
Настройки элемента · 12
source_urltext · По умолчанию: ""
Пример значенияhttps://bestplugins.online/native-samples/avatar.jpg
Пример Bubble выраженияSelected Profile's image_url
Адрес выбранного аудио, видео или изображения. Используйте тип файла, поддерживаемый этим плагином.
document_contexttext · По умолчанию: ""
Пример значения<current-user-id>
Пример Bubble выраженияCurrent User's unique id
Стабильное значение для этой учётной записи или записи. Используйте то же значение при восстановлении её сохранённых файлов или черновиков.
is_activeyes_no · По умолчанию: true
Пример значенияyes
Пример Bubble выраженияGuideHost's view_is_active (your yes/no custom state)
Установить «да», пока этот вид открыт. Установить «нет» при закрытии, чтобы воспроизведение или текущая работа могли остановиться.
disabledyes_no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияGuideHost's is_busy (your yes/no custom state)
Отключить элемент, пока приложение занято или действие недоступно.
show_controlsyes_no · По умолчанию: true
Пример значенияyes
Пример Bubble выраженияApp Settings' show_editor_controls
Показать или скрыть встроенные элементы управления.
crop_aspecttext · По умолчанию: "free"
Пример значения1:1
Пример Bubble выраженияAvatar Settings' crop_ratio
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
export_formattext · По умолчанию: "jpeg"
Пример значенияjpeg
Пример Bubble выраженияFormat Dropdown's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
export_qualitynumber · По умолчанию: 0.85
Пример значения0.85
Пример Bubble выраженияImage Settings' quality
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
export_max_dimensionnumber · По умолчанию: 2048
Пример значения2048
Пример Bubble выраженияImage Settings' max_side
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
allow_upscaleyes_no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияAllow upscale Checkbox is checked
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
ui_text_jsontext · По умолчанию: ""
Пример значения{}
Пример Bubble выраженияApp Settings' player_labels_json (supported keys only)
Необязательный JSON с поддерживаемыми надписями кнопок. Оставьте пустым, чтобы использовать встроенный текст.
languagetext · По умолчанию: "auto"
Пример значенияuk
Пример Bubble выраженияCurrent User's preferred_language
Установите language=auto для следования за поддерживаемым устройством или языком браузера. Введите поддерживаемый код языка, чтобы выбрать его явно.
Действия и их входные данные · 13
Load source

Нет параметров действия

Begin crop

Нет параметров действия

Apply crop
origin_xnumber · По умолчанию: —
Пример значения0
Пример Bubble выраженияCrop Settings' x (or omit all rectangle inputs)
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
origin_ynumber · По умолчанию: —
Пример значения0
Пример Bubble выраженияCrop Settings' y (or omit all rectangle inputs)
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
widthnumber · По умолчанию: —
Пример значения512
Пример Bubble выраженияResize Width Input's value:converted to number
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
heightnumber · По умолчанию: —
Пример значения512
Пример Bubble выраженияResize Height Input's value:converted to number
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Cancel crop

Нет параметров действия

Rotate
degreesnumber · По умолчанию: —
Пример значения90
Пример Bubble выраженияRotation Dropdown's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Flip
axistext · По умолчанию: —
Пример значенияhorizontal
Пример Bubble выраженияFlip Direction Dropdown's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Resize
widthnumber · По умолчанию: —
Пример значения512
Пример Bubble выраженияResize Width Input's value:converted to number
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
heightnumber · По умолчанию: —
Пример значения512
Пример Bubble выраженияResize Height Input's value:converted to number
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Undo

Нет параметров действия

Redo

Нет параметров действия

Reset edits

Нет параметров действия

Export image

Нет параметров действия

Cancel operation

Нет параметров действия

Clear session

Нет параметров действия

Состояния и события

Состояния

editor_status · text

Текущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха.

is_busy · yes_no

Работа всё ещё продолжается. Подождите, прежде чем начинать другое действие.

has_image · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

has_changes · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

can_undo · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

can_redo · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

image_width · number

Текущее значение выбранного элемента. Читайте его после связанного события.

image_height · number

Текущее значение выбранного элемента. Читайте его после связанного события.

output_uri · text

Расположение файла на этом устройстве. Сохраните или загрузите файл отдельно, если его необходимо хранить онлайн.

output_width · number

Текущее значение выбранного элемента. Читайте его после связанного события.

output_height · number

Текущее значение выбранного элемента. Читайте его после связанного события.

output_bytes · number

Текущее значение выбранного элемента. Читайте его после связанного события.

output_mime · text

Текущее значение выбранного элемента. Читайте его после связанного события.

error_code · text

Информация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.

crop_active · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

crop_rect_json · text

Текущее значение выбранного элемента. Читайте его после связанного события.

События

source_loaded

Когда происходит это событие, считайте связанные состояния из того же элемента.

source_load_failed

Когда происходит это событие, считайте связанные состояния из того же элемента.

edit_applied

Когда происходит это событие, считайте связанные состояния из того же элемента.

edit_undone

Когда происходит это событие, считайте связанные состояния из того же элемента.

edit_redone

Когда происходит это событие, считайте связанные состояния из того же элемента.

editor_reset

Когда происходит это событие, считайте связанные состояния из того же элемента.

export_started

Когда происходит это событие, считайте связанные состояния из того же элемента.

export_completed

Когда происходит это событие, считайте связанные состояния из того же элемента.

operation_cancelled

Когда происходит это событие, считайте связанные состояния из того же элемента.

editor_error

Когда происходит это событие, считайте связанные состояния из того же элемента.

Вопросы, которые задают разработчики

Является ли output_uri файлом Bubble?

Нет. Это локальный путь к кэшу. Сохраните его с помощью проверенного локального сохранителя или загрузчика перед сохранением ссылки на облачный файл.

Как работает подписка?

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Связанные руководства

Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.