Iris-Editor

User Manual

From login to finished print — the entire workflow in one document.

Updated: 2026-05-04 · Version: 1.7.3

1. Getting started

The Iris-Editor is a web application with a four-stage pipeline:

  1. Upload a photo — JPG or PNG, any size
  2. Extract the iris — AI-driven, runs automatically in the background
  3. Edit the iris — 11 sliders for exposure, colour, sharpness, shape
  4. Create the artwork — your chosen style is rendered over the iris

You can download intermediate results at any stage or skip ahead.

Tip: On your first login a sample iris is automatically added to your library. That way you can try the workflow without uploading your own photo first.

Requirements

  • A modern browser (Firefox, Chrome, Safari, Edge — last two versions)
  • A valid PurchaseID (see next chapter)
  • Internet connection — the AI steps run server-side

2. Login

The Iris-Editor doesn't use a password — instead it uses a permanent PurchaseID, which you receive when you buy on pureirisart.com.

Sign in

  1. Open https://editor.pureirisart.com
  2. Type your PurchaseID into the field (uppercase, no spaces)
  3. Click Sign in

If you arrive via a confirmation-email link, the ID is filled in automatically (?pid=YOUR_ID).

Login page with PurchaseID field
Login page — type your PurchaseID, click Sign in.

What happens after login?

You land in the Studio. On a first login the sample iris is already in your library and the guided tour starts automatically and points out the key UI elements. You can restart the tour at any time via the topbar icon.

Heads-up: Your PurchaseID never expires. Uploaded photos and extracted irises are deleted automatically after 30 days; finished artworks 30 days after they were created. Download anything important in time.

3. Upload a photo

In the Studio there's an upload button at the top left (or just drag & drop a photo onto the library area). Multiple files at once are fine.

What kind of photos work?

  • Format: JPG or PNG. Maximum file size around 50 MB
  • Resolution: ideally at least 3000 × 2000 pixels — the AI needs detail to extract the iris cleanly
  • Subject: a sharp eye with a clearly visible iris, not a portrait taken from three metres away
  • Lighting: as even as possible, no harsh shadows on the iris itself

During the upload

Each photo gets a small card in the left library column. While the iris is being extracted you'll see a progress bar — typically 30–60 seconds per photo. Meanwhile you can edit other irises or upload more.

Filenames

The original filename is kept and used to name your downloads later. You can rename it any time — right-click (or pencil icon) on the library card. That's relevant when your phone gives files names like IMG_8421.jpg: rename them to e.g. Sarah and from then on every download carries that name.

4. Iris extraction

Cutting out the iris runs entirely in the background. As soon as the card's status flips to done, the extracted iris is available as a 4000 × 4000 pixel PNG with alpha channel.

What does the extracted iris show?

  • Only the iris itself — pupil, sclera and eyelid have been cropped away
  • Background either white or transparent depending on the style (see Editor)
  • Free of motion blur and stray-eyelash artefacts — the AI handles that

If extraction fails

The card shows a red error badge. Most common reasons:

  • Iris in the photo too small or out of focus — upload a new photo
  • API server temporarily unreachable — kick off a retry from the card
  • File corrupted — check the original, re-export if necessary

The retry is a click on the small arrow-in-circle icon on the card. It restarts the extraction without re-uploading the photo.

5. Editor

In the Studio, open an iris by clicking it in the left library, then go to the Edit tab. The editor shows a before/after split slider in the centre and a panel on the right with the 11 sliders.

Editor with before/after slider and controls
Editor — before/after split in the centre, all 11 sliders on the right, with the “Transparent background” toggle on top.

The 11 sliders

Slider What it does When to use
Exposure Highlights and midtones together Rescue an over- or underexposed photo
Brightness Global brightness, linear Lift or darken the whole iris
Contrast Spread between shadows and highlights Pull out detail
Saturation Colour intensity Refresh dull irises
Temperature White balance, cool vs. warm Fix a colour cast
Brown correction Damps brown pigmentation Save detail contrast in very dark irises
Sharpening Edge sharpness Add a touch before printing
Crop / Padding Trim plus padding around it Centre the iris or leave breathing room
Pupil size Pupil scaling Show more iris area for the print
Iris cut-off Hard circular cut at the iris edge Clean round iris with no sclera left over
Soft edges Gentle anti-alias edge Iris feels softer, no hard cut

Double-clicking a slider's label resets it to the default value. The cursor keys nudge the active slider in fine steps.

Transparent background

The Transparent background toggle removes the white background of the extraction via chroma-key. It's on by default because most art styles expect an iris with an alpha channel.

Only switch it off if you want to download the iris as a plain RGB PNG with a white background.

Presets

Once you've found a slider combination you like, you can save it as a preset (top right of the editor, disk icon). The preset gets a name, lives globally in your account and can be applied to any other iris.

The preset menu shows your saved presets — clicking one applies it to the current iris. Non-matching values (e.g. pupil size) get overwritten by the preset, you can keep adjusting afterwards.

Reflection

Optional highlight (reflection) you can drop on the iris. Shape, position, size, brightness, rotation are all separately adjustable. Switch it on via the Reflection toggle, the matching sliders appear.

Save

The green Save button writes the current slider values as the edited variant of the iris. The editor closes, in the Studio you'll see the new variant in the library. Saving again overwrites — there's always at most ONE edited version per iris.

The extracted original variant stays untouched. In the art picker you choose whether a style should be applied to the raw extracted or the edited variant.

6. Studio — the central workspace

The Studio is a master-detail layout: on the left the library of all your irises, on the right the detail view of the currently selected iris with four tabs.

The tabs

  • Overview — original, extract, edit side by side; download buttons; status info
  • Edit — the editor (see chapter 5)
  • Art styles — the style picker (see chapter 7)
  • Variants — every artwork generated from this iris (see chapter 8)

Library (left)

Each iris is a card with thumbnail, status badge and date. Sort order can be flipped at the bottom (name / date, ascending or descending). A search filter for long lists is hidden behind the magnifying glass.

Studio with iris library
Studio start view — left the iris library, right the detail area.
Iris detail Overview tab
Iris detail with the four tabs Overview, Edit, Art styles, Variants — the three stages original / AI iris / edited iris next to each other.

Topbar (top)

  • Activity — indicator for background renders
  • Credits — your remaining quota (sourced from the shop, not managed here)
  • Tour — restarts the guided introduction
  • User menu (right) — low-bandwidth mode, language, logout, optionally Events

Low-bandwidth mode

The user menu has a low-bandwidth toggle. When enabled, library and previews load at 1200 px instead of full resolution. Saves bandwidth — relevant on mobile or weak Wi-Fi. Editor and downloads still use full resolution.

Language

Four languages: DE, EN, ES, FR. Switch via the user menu. Your choice is stored in your account and applies to every device.

7. Art styles — pick & render

The Art styles tab shows every available style as a tile, grouped by iris count: 1, 2, 3, 4 or 5 irises per composition.

Art-styles picker with T-toggles
Art-styles picker — styles grouped by iris count, every tile has a select-checkbox on the left and a T-toggle on the right (green = render with default text).

Single-iris styles

For 1-iris styles a click on the tile is enough. The tile pops a small preview modal where you can see the style on your iris (no credits consumed, just a preview). Confirm kicks off the actual render.

Multi-iris styles

Styles for 2–5 irises pop a multi-iris picker. You pick the irises for slot 1, 2, 3 etc. from your library. Requirements:

  • Each slot needs an edited version with a transparent background — otherwise the style endpoint can't compose them
  • No slot duplicates — each iris may appear only once per composition
  • Order matters: slot 1 is usually the “main” iris, the others complement

Re-order slots: drag & drop on desktop, tap-to-swap on mobile (tap slot A, then slot B — contents swap).

Batch submit (multiple styles at once)

You can select several style tiles at the same time (checkbox top-left of every tile). An action bar then appears top and bottom with the selected count + the submit button. Click → all run sequentially.

If a style has already been rendered for this iris combination, a duplicate warning pops up before any credits are consumed — you can decide which to overwrite.

While rendering

The topbar's activity indicator counts up. The style tile itself shows a load overlay. In the Variants tab the variant appears as a placeholder with status; once it's done the overlay disappears and the preview is visible.

8. Manage variants

The Variants tab shows every rendered artwork of the current iris as a tile. Bottom-right of every variant there are four icons:

  • 📐 Crop — crop editor
  • T Text — text editor (see chapter 9)
  • Download — as JPG/PNG
  • 🗑 Delete — to the trash
Variants tab with finished artworks
Variants tab — each tile shows a render with the style name; bottom-right the icons Crop / Text / Download / Delete. Top-right “All as ZIP” for bulk export.

Crop

In the crop modal you drag the desired section with the mouse. Move it with cursor keys in 2-pixel steps, hold Shift for 20-pixel steps.

Aspect-ratio presets are built in: 1:1 (square), 2:3 (classic photo), 3:4 (portrait poster). With Reset you remove the crop and see the original render again.

Crops are non-destructive — they don't overwrite the original; they're applied dynamically on every download.

Text

Covered in detail in chapter 9.

Download & ZIP export

Single download via the ⬇ icon on the variant. The ZIP icon in the action bar at the top packs every selected variant into a single ZIP. Multi-select with shift-click or via the variant checkboxes.

Filename schema:

OriginalName_StyleName.jpg
OriginalName1+OriginalName2_StyleName.jpg   (multi-iris)

Trash

Deleted variants land for 30 days in the trash (bottom-right tab Trash). Until then they can be restored or finally deleted. After that automatic cleanup.

Failed list

If a render fails, an own section Errors appears in the Variants tab with the API error. Retry kicks off a new render — usually enough if the API was briefly unavailable.

9. Text editor — put text on the artwork

Clicking the T icon on a variant opens the text editor. You can add multiple text layers, move/rotate/colour them — the preview is pixel-perfect what comes out of the download or print later.

Text editor with first name + date on a variant
Text editor — top the toolbar with “+ Text”, font picker, anchor (left/centre/right), size + rotation. Below the canvas: variable hint and the template menu.

Add a layer

Button + Text top left. The new layer drops top-left on the image and is immediately in edit mode — just type, the placeholder gets replaced. Esc or click outside ends editing.

Edit existing layers by double-clicking. Up to 20 layers per variant.

Fonts & favourites

47 curated Google Fonts in 5 categories:

  • Script — handwriting fonts (Allura, Great Vibes, …)
  • Display — eye-catching display faces
  • Serif — classic serif faces
  • Sans — modern sans-serif
  • Mono — fixed-width typewriter style

In the font picker you can:

  • Use cursor keys / to live-preview every font on the canvas (works even with the list closed)
  • Filter by search or category
  • Star the active font to add it to your favourites — they're stored in your account, available on all your devices
  • The “Favourites” filter restricts the cursor-key navigation to your starred fonts only

Size, rotation, letter-spacing

  • Size: slider 0.5 % – 40 % of image height. Double-click = reset
  • Rotation: slider –180° to +180°, plus a number input for precise values. Double-click = 0°
  • Spacing (letter-spacing / tracking): –50 to 500 in 1/1000 em. Negative = tighter, positive = looser

Anchor (left / centre / right)

The three icons in the toolbar decide which point a text aligns around when its length changes:

  • Left — left edge stays fixed, text grows to the right
  • Centre — centre stays fixed, text grows symmetrically
  • Right — right edge stays fixed, text grows to the left

Important when you use variables: the anchor decides how different lengths line up. Classic example: %Filename1% may resolve to “Anna” or “Maximilian” — with anchor “Centre” the text stays centred for both.

Move + Shift axis-lock

Dragging with the mouse moves the layer freely. Hold Shift while dragging and the layer stays on a straight line — horizontal or vertical depending on which way you pull. Handy when aligning multiple layers on the same height.

Variables

You can type placeholders into the text content; they get replaced automatically:

Placeholder Replaced with
%Filename1%Original filename of the iris in slot 1 (without extension)
%Filename2% .. %Filename6%Same for slot 2 to 6
%DD.MM.YYYY%Today's date, format 03.05.2026

When you exit edit mode (Esc / click outside) the placeholder is immediately replaced with the real value — you see right away what will end up on the print. Re-editing the same layer brings the placeholder back, you can keep working with variables.

Templates

The footer of the text editor has a Template menu. It saves the current text setup so new variants of the same style start with that text already applied.

  • Save as my template — applies only to your PurchaseID
  • Remove my template — falls back to the default again
  • Save as admin default admin only — applies to every customer that doesn't have their own template

Resolution order when a new variant is created:

  1. Customer override (your own template)
  2. Admin default
  3. No text

Save

Save → the browser renders the final text overlay as a transparent PNG at full image resolution and sends it along. The server composites it 1:1 onto the artwork — editor preview and download are pixel-perfect identical.

10. Settings

The user menu (top right) holds:

  • Low-bandwidth mode — previews at 1200 px instead of full resolution. Off by default.
  • Language — DE / EN / ES / FR. Effective immediately, applies across all your devices.
  • Events operator only — event management (see chapter 11)
  • Logout

11. Event mode Operator

Event mode is built for live events: you photograph irises on-site, the guest registers from their own phone, and ideally takes home a 15 × 20 cm print before they even leave the venue.

Requires your PurchaseID to have the is_event_operator = 1 flag. Ask the admin if the Events entry doesn't appear in your menu.

Create an event

Events list in the studio UI
Events list — every event with primary-colour stripe, slug, count of auto-render styles and status. Per card: copy poster URL, edit, deactivate.

User menu → Events+ New event. Fields:

Field Meaning
Title Display name, appears on the poster & phone page
Slug URL component, unique (e.g. wedding-mueller-2026)
Date / location Optional, display only
Primary colour Accent colour for buttons on the public page
Background colour Body background on register / status page
Logo URL Optional, top of public pages
Print format 15 × 20, 13 × 18 or 10 × 15 cm
Retention (days) How long data + renders are kept
Auto-render stylesList of styles that render automatically after editor save
T-toggle per stylePer-style: render with default text or without
Active Unlocks the registration page
Event form with multi-style picker
Event form — branding fields up top, multi-style picker (styles grouped by iris count) with a T-toggle per style for “with / without default text”.

Poster / guest registration

After saving you'll see the event card in the events list. Clicking Copy poster URL gives you a URL like:

https://event.pureirisart.com/register.php?slug=<your-slug>

Print this URL as a QR code and put it up at the event entrance. Each guest scans it with their own phone, lands on the registration page and types in:

  • First name (mandatory)
  • Last name (optional)
  • Email (mandatory)
  • GDPR checkbox (mandatory)
  • Marketing checkbox (optional, for lead-gen)

After submit the guest's phone shows:

  • A QR code (for your webcam to scan)
  • A 6-digit code (fallback when the scan doesn't work)

Operator surface

On your photo laptop, open:

https://event.pureirisart.com/op.php

The page has:

  • A webcam area with an active QR scanner
  • A manual code field + event dropdown (the fallback)
  • A queue of every guest of every event of yours
  • ? button at the top right — compact cheat sheet with every relevant URL
Operator surface scanner mode with queue
Operator surface (scanner mode) — top the webcam, then the manual code field, then the queue with all guests + status badges. Top right the ? icon for the cheat sheet.

Workflow:

  1. Guest holds phone in front of the webcam → QR is scanned → drop zone opens with the guest's data
  2. Drag a photo from the tethering folder onto the drop zone
  3. Upload + iris extraction run — the guest sees the live status on their own phone
  4. Operator switches to the next person, the editor calls
Operator surface with active guest and drop zone
Active-guest mode after a QR scan — guest data on top, drop zone for the iris photo in the middle, “Next guest” button below.

Auto-render after editor save

As soon as the operator saves an iris in the editor with the transparency toggle on:

  1. The editor closes quickly (UI feels snappy)
  2. Every auto-render style of the event is started in the background
  3. For each style with the T-flag, the default text with variables is applied automatically
  4. Renders show up in the operator queue with status rendering, then later done

Queue in detail

Status Meaning
no photoGuest registered, no photo uploaded yet
extractingPhoto uploaded, AI extraction in flight
editExtraction done, waiting for a manual editor save. Click Editor to open the iris in the studio in a new tab.
renderingEditor saved, auto-render in flight
doneAll renders finished
errorTidy with the ✕, save in the editor again to re-render

Each row shows the guest name, event title, filename (click → studio detail in a new tab), and depending on status either the editor link or an ✕ button to clear stuck renders. The queue auto-refreshes every 15 seconds.

After the event

Bulk emailing of download links isn't running automatically yet — planned. Until then you can download renders one-by-one from the studio or bundle them via the ZIP export.

12. Troubleshooting

Login doesn't work — “PurchaseID invalid”

Double-check the PurchaseID: no spaces, uppercase. If it's right, the validation API may be briefly down — wait a minute, try again. After repeated failed attempts the IP gets locked for 15 min (brute-force protection).

Iris extraction stuck at 50 %

The AI API has hung. Click the retry icon on the library card — extraction restarts without re-uploading the photo.

Multi-iris style fails with “iris has no transparent background”

The selected slot contains an iris without transparent background. Open the iris in the editor, switch on “Transparent background”, save. Then apply the style again.

Text position in editor ≠ position in download

Shouldn't happen since version 0.17.0 — the browser renders the text overlay as a PNG, the server composites 1:1. If you still see an old cache: touch the variant once via crop or re-save so the caches refresh.

Script-font swashes are clipped in the editor

Fixed since 1.0.x — Fabric glyph caching disabled. If you still see it: browser reload, possibly clear browser cache.

Render hangs in “rendering” and never finishes operator

Click the ✕ on the right of the queue row — every stuck render of that iris gets deleted. Save the iris in the editor again, the auto-trigger picks fresh render jobs.

QR code guest → operator doesn't work operator

Three standard causes:

  1. Webcam permission not granted in the browser → check the address bar, allow again
  2. Reflection / poor lighting → type the 6-digit code manually (pick the event from the dropdown)
  3. Session cookie still on the old subdomain — log out completely + clear cookies, log in again
Move data between PurchaseIDs (e.g. after accidentally logging in with the wrong one)

Use the CLI script scripts/transfer_purchase.php. See scripts/README.md in the repo. Always run with --dry-run first to inspect the plan, then again without.

13. Glossary

PurchaseID
Permanent string identifier issued at purchase. The only login mechanism.
Upload
The original photo in your library. Each upload spawns iris versions (extracted, edited).
Iris version
A processed form of your iris: extracted (AI output) or edited (after your slider tweaks).
Artwork / variant
The finished image made of iris(es) + style. Any number of styles per iris combination, one variant per style.
Style
The AI art template (e.g. Stardust, Swirl Black). Each style fixes the required iris count.
Crop box
Per-variant cropping definition. Non-destructive — applied dynamically on every download.
Text overlay
The text layers on a variant. The browser renders the overlay as PNG, the server composites it onto the artwork.
Text template
Pre-defined text-layer setup per style. Auto-applied to new variants when enabled.
Event operator
Configuration container for a live event with its own branding, default styles and guest registration.
Operator surface operator
The live operator UI at event.pureirisart.com/op.php — webcam scanner + drop zone + queue.
Low-bandwidth mode
Previews load at 1200 px instead of full resolution — saves bandwidth. Toggle in the user menu.