HSL Camera AI — Guida Utente
🖨 Stampa ← Torna all'app

HSL Camera AI

Guida utente completa — post-produzione AI per immagini e video di moda e prodotto

v1.21.0 Chalco / Hyphen Group Uso interno

🗺 Panoramica

HSL Camera AI è una piattaforma web per automatizzare la post-produzione di immagini e video. Si inviano file a flussi di lavoro (workflow) configurati, l'agent AI elabora tutto in background, e i risultati compaiono nella griglia Results.

SezioneA cosa serve
ResultsGriglia di tutti i risultati. Da qui si possono aprire, scaricare, archiviare in Library o raffinare.
New JobInvio manuale di un singolo job a un workflow.
BatchInvio di molti file contemporaneamente allo stesso workflow.
LibraryArchivio permanente degli output approvati.
QueueMonitor in tempo reale dei job in attesa o in elaborazione.
WorkflowsConfigurazione dei flussi di lavoro disponibili.
EnginesConfigurazione degli engine AI (OpenAI, Google, Kling…)
LogLog in tempo reale dell'agent.

📷 Results

La vista Results mostra tutti i job completati come griglia di anteprime, ordinati dal più recente. Usa il filtro in alto a destra per vedere solo i risultati di un workflow specifico.

Vista Results

Vista Results — griglia dei job completati

Azioni su ogni card

Passa il cursore su una card per far apparire i pulsanti:

  • → Lib Sposta l'output nella Library (operazione permanente e non reversibile).
  • ⬇ Download Scarica il file in full resolution.
  • ✕ Elimina Elimina il job e tutti i suoi file. Non ripristinabile.

Zoom e lightbox

Clicca su qualsiasi anteprima per aprire il lightbox a schermo intero. Nel lightbox puoi:

Lightbox

Lightbox — confronto e zoom dell'output AI

  • Slider ⇄ Trascina il divisore centrale per confrontare l'output AI (sinistra) con l'immagine originale (destra).
  • Zoom + / − Ingrandisce o riduce l'immagine con step precisi. Usa anche la rotella del mouse per zoomare in continuo, e trascina per spostarti nell'immagine ingrandita. Doppio click alterna tra fit e riempimento schermo.
  • Download ⬇ Scarica l'output in full resolution.
  • Artifacts Mostra i file di log e gli step intermedi generati dal job.
  • Retry Rimanda il job in coda con gli stessi parametri.
  • Refine Apre il pannello di rifinitura (vedi sotto).
  • Esc / ✕ Chiude il lightbox.
💡 Suggerimento Per valutare la qualità dell'output su schermi retina, usa la rotella del mouse per zoomare fino alla risoluzione nativa: le anteprime in griglia vengono ridotte, lo zoom mostra i pixel reali.

Refine

Refine permette di usare l'output di un job come input per un nuovo job, modificando il prompt o aggiungendo immagini di supporto — senza dover ricaricare i file.

CampoDescrizione
Target WorkflowIl workflow che elaborerà il refine (può essere diverso dall'originale).
PromptPrompt completo per questo refine. Sostituisce il prompt base del workflow.
Immagini aggiuntiveFile extra da aggiungere dopo l'output AI come input aggiuntivo (es. immagini di stile).

➕ New Job

Invia un singolo job a un workflow. Usa questa sezione per elaborazioni one-off o quando vuoi controllare i parametri nel dettaglio.

New Job

Modulo New Job

Come inviare un job

  1. Trascina una o più immagini nell'area di upload, oppure clicca per sfogliare i file.
  2. Seleziona il Workflow dal menu a tendina. La descrizione appare sotto il menu.
  3. Opzionale: espandi Workflow prompt per vedere il prompt base del workflow (vedi sotto).
  4. Inserisci eventuali parametri nel campo Prompt append (opzionale — vedi sotto).
  5. Clicca Submit. Il job viene creato e appare subito in Queue.

Workflow prompt

Dopo aver selezionato un workflow, compare sotto l'elenco immagini una sezione ▶ Workflow prompt espandibile. Cliccandola si visualizza il testo completo del prompt.txt del workflow — utile per capire il contesto già fornito al modello prima di scrivere un Prompt append.

Ordine delle immagini

Quando carichi più immagini, l'ordine è importante. Usa le frecce ▲▼ per riordinarle. L'ordine definisce quale immagine corrisponde a quale ruolo nel prompt del workflow (es. Image 1 = soggetto, Image 2 = stile).

Se il workflow ha un image_mapping.json, ogni posizione riceve un suffisso di slot (es. _REF2, _REF3) al momento del caricamento. Le immagini che non rientrano in nessuno slot del mapping vengono escluse dal job con un avviso nel log.

Analisi accessori (prefisso accessory_)

Nei workflow che usano openai_prod come Prompt Engine, qualsiasi immagine caricata con il nome che inizia per accessory_ (es. accessory_belt.jpeg) attiva automaticamente uno step di analisi visiva:

  1. L'immagine viene analizzata da gpt-4o vision.
  2. Viene generata una descrizione tecnica precisa dell'accessorio: materiale, colore esatto, texture, hardware, cuciture.
  3. La descrizione viene iniettata nel prompt di generazione con l'istruzione di preservare l'accessorio esattamente come mostrato.

La descrizione è salvata anche come accessory_description.txt negli artifact del job per ispezione.

💡 Convenzione nomi Il prefisso accessory_ viene preservato durante il caricamento: il suffisso di mapping viene aggiunto in coda al nome originale (es. accessory_belt.jpegaccessory_belt_REF2.jpeg), non lo sostituisce.

Prompt append

Il campo Prompt append permette di personalizzare il comportamento del workflow per questo specifico job. Supporta due formati che possono coesistere nello stesso campo:

# Parametri KEY=VALUE — uno per riga SIZE=1536x1024 QUALITY=high PAD_INPUT=white OUTPUT_NAME=mio_output.png # Testo libero — aggiunto in coda al prompt del workflow Focus on the garment texture. Ignore background elements.

I parametri KEY=VALUE vengono estratti automaticamente e passati all'engine. Il testo rimanente viene appendato al prompt base del workflow.

ℹ Gerarchia I parametri inseriti qui hanno la priorità massima e sovrascrivono i default di workflow ed engine. Vedi la sezione Gerarchia parametri per i dettagli.

📦 Batch

Invia più file contemporaneamente allo stesso workflow. Ogni file genera un job separato e indipendente. Ideale per elaborare interi shooting in una sola operazione.

Batch

Modulo Batch — invio multiplo

  1. Seleziona il Workflow.
  2. Inserisci un eventuale Prompt append condiviso — viene applicato a tutti i job del batch.
  3. Trascina i file nell'area FILES. Ogni file diventa un job indipendente.
  4. Verifica che ogni file mostri il badge READY, poi clicca Submit Batch.
💡 Suggerimento Per batch grandi, tieni d'occhio la Queue: puoi monitorare lo stato di ogni job in tempo reale.

📚 Library

La Library è l'archivio permanente degli output approvati. I file qui presenti non vengono mai rimossi dalle pulizie automatiche dei job.

Library

Library — archivio degli output approvati

Filtrare e cercare

I tab in cima alla griglia filtrano per workflow di origine. Il numero tra parentesi indica quanti item ci sono. Il campo di ricerca in alto a destra filtra per nome file in tempo reale.

Ingrandire le immagini

Come in Results, clicca su qualsiasi item per aprire il lightbox con zoom a dimensione nativa.

Selezionare e agire

Clicca su una o più card per selezionarle. La barra azioni appare in basso:

  • ⬇ Download Scarica il file selezionato.
  • ✏ Rename Rinomina il file.
  • ✕ Delete Elimina definitivamente il file dalla Library.
  • Deselect Deseleziona tutti gli item.

Upload diretto

Il bottone + Upload in alto a destra permette di caricare file direttamente in Library, senza passare da un job AI.

⏳ Queue

La Queue mostra tutti i job in attesa o in elaborazione, con aggiornamento automatico ogni 5 secondi. Non è necessario ricaricare la pagina.

Queue

Queue — monitor dei job in elaborazione

Colonne

ColonnaContenuto
WorkflowNome del workflow e modello tecnico usato (es. gemini-2.0-flash-preview-image-generation).
JobID del job, stato e orario di invio.
ImagesNumero di file input e nome del primo file.
ParamsParametri effettivi risolti: SIZE, QUALITY, PAD_INPUT, ecc.

Stati

PENDING — in attesa di essere preso dall'agent   PROCESSING — in elaborazione   FAILED — elaborazione fallita

Leggere i parametri

I tag nella colonna Params mostrano i parametri effettivi che verranno usati — risultato del merge tra tutti i livelli di configurazione:

  • tag grigio Valore proveniente dal default engine o workflow.
  • tag blu Valore esplicitamente impostato nel prompt append del job (override).

Azioni

  • Retry Rimanda il job in coda come PENDING, con gli stessi file e parametri.
  • Remove Rimuove il job dalla coda senza elaborarlo.

⚙️ Workflows

La sezione Workflows permette di configurare i flussi di lavoro disponibili. Ogni workflow combina un prompt, un engine AI, dei parametri di default e opzionalmente immagini di riferimento.

Workflows

Lista workflow con drag handle per il riordino

Riordinare i workflow

Trascina la maniglia a sinistra di ogni card per cambiare l'ordine nella lista. Il salvataggio è automatico al rilascio. Funziona anche da iPad e dispositivi touch.

Creare un nuovo workflow

Clicca + New in alto a destra. Il nome inserito viene prefissato automaticamente con WKF_IN_.

Configurare un workflow

Clicca su un workflow per espandere la card di configurazione. I campi disponibili sono:

CampoDescrizione
PromptIl prompt base inviato all'engine. Può essere un prompt completo o istruzioni per il Prompt Engine.
Prompt EngineLLM che elabora il prompt base prima di inviarlo all'Image Engine. Usa passthrough per inviare il prompt direttamente.
Image EngineModello AI che genera l'output (immagine o video).
Default SizeDimensioni output di default (es. 1024x1024) — sovrascrivibile per singolo job.
Default QualityQualità di default (high, medium, low) — solo engine OpenAI.
Pad InputAggiunge padding all'immagine di input per adattarla all'aspect ratio del SIZE target, evitando zoom/distorsioni. Valori: white, black, transparent.
image_mappingDefinisce quale slot di input corrisponde a quale immagine del workflow.
Reference ImagesImmagini fisse aggiunte in coda agli input di ogni job (es. immagini di stile).
Output FormatFormato del file di output: PNG, JPEG, WebP.
DescriptionDescrizione breve mostrata nella lista e nei selettori.
⚠ Attenzione — PAD_INPUT PAD_INPUT è utile quando l'immagine di input ha un rapporto larghezza/altezza molto diverso dal SIZE di output. Senza padding, l'engine AI tende a zoomare per riempire il frame, deformando il soggetto.

🤖 Engines

La sezione Engines mostra e permette di configurare tutti gli engine AI disponibili.

Engines

Pannello Engines — configurazione degli engine AI

Defaults

La card Defaults in cima definisce il Prompt Engine e l'Image Engine usati dai workflow che non ne specificano uno esplicito.

Configurazione per engine

Espandendo un engine appaiono i campi specifici per quella piattaforma:

  • Prompt Model Modello LLM per l'elaborazione del prompt (es. gpt-5.2).
  • Image Model Modello per la generazione dell'immagine (es. gemini-2.0-flash-preview-image-generation).
  • Default Size Dimensioni output di default per questo engine.
  • Default Quality Qualità di default (high, medium, low).
  • Note Nota editoriale (max 160 caratteri).

Clicca 💾 Save All per salvare le modifiche a tutti gli engine.

🔢 Gerarchia dei parametri

SIZE, QUALITY e PAD_INPUT vengono risolti con la seguente priorità. Il livello più alto vince sempre:

1
Job override — priorità massima Parametri KEY=VALUE nel campo Prompt append del singolo job.
2
Default workflow Campi Default Size, Default Quality, Pad Input nella scheda Workflow.
3
Default engine Campi Default Size, Default Quality nella scheda Engines.
4
Globale — priorità minima Configurazione runtime del server (postprod_agent_runtime.json).
📌 Esempio pratico L'engine openai_prod ha default_size=1024x1536. Il workflow SHOES ha DEFAULT_SIZE=1024x1024. Il job ha SIZE=1536x1024 nel prompt append. → Viene usato 1536x1024 (livello 1 vince su tutto).

INPUT_MAX_SIZE (v1.11.0) segue la stessa gerarchia a 3 livelli: campo Input Max Size nella scheda Workflow, sopra il campo omonimo nella scheda Engines (OpenAI/Google; altri engine via JSON grezzo), entrambi sovrascrivibili dal prompt append del singolo job.

📋 Riferimento parametri prompt append

Questi parametri possono essere inseriti nel campo Prompt append in formato CHIAVE=valore, uno per riga.

ParametroValoriEngineDescrizione
SIZE 1024x1024, 1024x1536, 1536x1024, … OpenAI, Google, Veo, Sora Dimensioni dell'output in pixel (larghezza × altezza).
QUALITY high, medium, low OpenAI Qualità della generazione. high usa più crediti ma produce dettagli migliori.
PAD_INPUT white, black, transparent Tutti (immagini) Aggiunge padding all'immagine di input per adattarla all'aspect ratio del SIZE, prevenendo zoom/distorsioni.
OUTPUT_NAME es. risultato.png Tutti Nome personalizzato del file di output.
OUTPUT_FORMAT jpeg, png, webp Dove supportato Formato del file di output.
INPUT_MAX_SIZE es. 2048 (px, lato lungo) Tutti (immagini, tranne video) Riduce (mai ingrandisce) le immagini di input se superano questa dimensione, mantenendo le proporzioni — utile per alleggerire upload/costi banda. Se non impostato, nessun resize (comportamento invariato). Campo Input Max Size disponibile nella scheda Workflow (per ogni workflow) e nella scheda Engines per OpenAI/Google (per ogni engine); per gli altri engine (fal.ai, Kling, Armandick, ecc.) va aggiunto manualmente come "input_max_size" nel JSON grezzo della scheda Engines. Aggiunto in v1.11.0, campi UI aggiunti in v1.11.2.

Esempio completo

SIZE=1536x1024 QUALITY=high PAD_INPUT=white OUTPUT_NAME=scarpa_bianca_v2.png # Testo libero — appendato al prompt del workflow Maintain the exact shoe shape. White background. No shadows.
💡 PAD_INPUT — quando usarlo Usa PAD_INPUT=white quando l'immagine di input è molto più larga (o alta) rispetto alle proporzioni del SIZE target. Senza padding, l'engine AI tende a zoomare per riempire il frame, deformando il soggetto. Con il padding, l'immagine originale viene centrata su uno sfondo neutro della dimensione corretta.

Studios

Gli Studios sono pagine pubbliche brandizzate che espongono un workflow PostProdAgent a utenti esterni — clienti, partner o team — senza dare accesso all'interfaccia admin del Playground.

Ogni studio ha un URL dedicato (es. /fabric-studio), un'identità visiva personalizzabile (sfondo, colori, logo) e uno o più slot per il caricamento delle immagini di input.

Creare uno studio

Dal tab Studios, clicca + New Studio. Compila i campi:

CampoDescrizione
TitleNome visualizzato nella pagina pubblica (es. "Fabric Studio")
SlugParte finale dell'URL, generato automaticamente dal titolo (es. /fabric-studio)
DescriptionSottotitolo visibile nella pagina pubblica
WorkflowIl workflow PostProdAgent che elabora le immagini caricate
Accent colorColore principale di bottoni e bordi slot
BackgroundImmagine di sfondo della pagina pubblica (jpg/png)
CTA textTesto del bottone di invio (default: "Generate")
Prompt appendIstruzioni extra aggiunte automaticamente a ogni job (invisibili all'utente)
PasswordSe compilata, la pagina pubblica mostra un form di accesso prima di mostrare gli slot

Slot immagini

Ogni studio ha uno o più slot, ovvero riquadri dove l'utente carica le immagini di input. Per ogni slot configuri:

  • Size — Small / Medium / Large: dimensione visiva del riquadro
  • Titolo slot — etichetta visibile sotto il riquadro nella pagina pubblica (es. "Tessuto principale")
  • Hint interno — testo suggerimento mostrato dentro il riquadro prima dell'upload (es. "Carica il tessuto")

Con il bottone + Add slot aggiungi altri slot (es. per workflow che richiedono immagine del tessuto + modellino + dettaglio).

💡 Titolo vs Hint Il Titolo slot è l'etichetta permanente — rimane visibile anche dopo che l'utente ha caricato l'immagine. L'Hint interno è il testo suggerimento che scompare al caricamento. Usa il Titolo per far capire all'utente cosa serve in quello slot.

Pagina pubblica

Una volta salvato, lo studio è disponibile all'URL http://<server>:8765/<slug> — accessibile da qualsiasi browser, senza login.

Il flusso utente è:

  1. L'utente apre il link dello studio nel browser
  2. Carica le immagini negli slot (click o drag & drop)
  3. Aggiunge istruzioni aggiuntive opzionali nel campo testo
  4. Clicca il bottone CTA (es. "Produci")
  5. La pagina mostra lo spinner di elaborazione e poi il risultato a schermo intero
  6. L'utente può scaricare il risultato o tornare per un nuovo job
💡 PWA su iPhone Su Safari, apri la pagina dello studio → tasto Condividi → Aggiungi a schermata Home. Lo studio si installa come app senza App Store.

Gateway API

Il Gateway API espone i workflow PostProdAgent tramite un'interfaccia compatibile con le OpenAI Responses API. Qualsiasi client che parla il protocollo OpenAI può puntare il suo base_url a questo server e inviare job senza integrazioni custom.

La documentazione interattiva è disponibile all'indirizzo gateway_api.html.

Autenticazione

Tutti gli endpoint richiedono HTTP Basic Authentication con le stesse credenziali dell'interfaccia admin:

curl -u admin:admin http://<server>:8765/v1/responses ...

Endpoint

Metodo Path Descrizione
POST/v1/responsesCrea un job, ritorna subito con status: queued e un id
GET/v1/responses/{id}Polling: ritorna lo stato e, quando completato, l'immagine risultante in base64
GET/v1/modelsLista dei model/workflow disponibili (compatibile con openai.models.list())

Esempio Python

import openai, base64, time

client = openai.OpenAI(
    base_url="http://46.62.134.81:8765/v1",
    api_key="admin:admin",
)

with open("fabric.jpg", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode()

# Crea il job
response = client.responses.create(
    model="postprod/virtual_try_on",
    input=[{"role": "user", "content": [
        {"type": "input_image", "image_url": f"data:image/jpeg;base64,{img_b64}"},
    ]}],
)

# Polling
while response.status not in ("completed", "failed"):
    time.sleep(5)
    response = client.responses.retrieve(response.id)

# Risultato
img_url = next(c.image_url.url for c in response.output[0].content
               if hasattr(c, "image_url"))
print("Risultato:", img_url[:60], "...")
💡 Model routing Il campo model mappa al workflow: postprod/virtual_try_onWKF_IN_VIRTUAL_TRY_ON. Usa postprod/auto con il campo workflow per specificare esplicitamente il nome completo del workflow.

📋 Changelog

Sono elencate le ultime tre versioni. Lo storico completo delle release precedenti vive nel CHANGELOG.md del repository.

v1.21.0 — IDM: i dettagli del prodotto, ritagliati da soli

  • Nuovo: workflow IDM (Intelligent Detail Mapping) Da una singola foto di prodotto, l'app individua fino a 5 dettagli significativi — chiusure, logo, cuciture, lavorazioni, texture del tessuto — e te li restituisce già ritagliati. I ritagli sono presi dal file originale a piena risoluzione, mai da una copia ridotta: un dettaglio che occupa il 10% di uno scatto da 24 megapixel esce a piena definizione. Per usarlo: nel workflow imposta idm_mapper_openai come prompt engine e idm_crop come image engine, e nel prompt descrivi quali dettagli contano per il tuo prodotto.
  • Ogni dettaglio è un risultato a sé I ritagli compaiono in Results come schede indipendenti, accanto al lavoro che li ha prodotti: si scaricano, si cancellano e si mandano a un altro workflow con Refine uno per uno. Portare un singolo dettaglio a 4x è ora questione di due clic. Il risultato principale del lavoro resta la foto con i riquadri disegnati sopra, che serve a vedere a colpo d'occhio cosa è stato individuato — ed è da lì che si fa Retry, perché rifare il lavoro rifà anche tutti i ritagli.
  • Cancellare un workflow ora dice quanti risultati porta via Prima l'avviso diceva "tutti i suoi dati", che è vero sia che i lavori siano zero sia che siano seicento. Ora, se ci sono risultati, l'app si ferma e chiede conferma dichiarando il numero esatto. Un workflow senza risultati si cancella come prima. Ricorda che la cancellazione resta definitiva: non c'è cestino e non c'è backup dei lavori.

v1.20.9 — Fix del viraggio colore, con un interruttore

  • Nuovo: interruttore per la normalizzazione colore Nelle impostazioni di ogni workflow, "Normalize color space to sRGB before generation" — attivo di default. Da disattivare solo se hai un motivo specifico per inviare le immagini senza conversione.
  • Risolto il "viraggio colore" su alcuni risultati Toni caldi (marroni, cuoio, rossi scuri) potevano tornare leggermente alterati rispetto alla foto sorgente. Causa: foto scattate in Adobe RGB (comune in uscita da fotocamera o Lightroom/Photoshop) — i motori di generazione leggono i numeri RGB grezzi e ignorano il profilo colore dichiarato, quindi una foto Adobe RGB veniva silenziosamente reinterpretata come sRGB, proprio dove i due spazi colore divergono di più. Le foto sorgente vengono ora convertite in vero sRGB prima che qualunque motore le veda.
  • Corretti altri punti della pipeline Un controllo più ampio, partito dalla stessa indagine, ha trovato altri passaggi (ridimensionamenti, conversioni di formato, il ritaglio di un job Edit Region) che perdevano silenziosamente il profilo colore della foto sorgente. Corretti tutti.

v1.20.8 — Output PNG più leggero e identico byte per byte

  • PNG più piccoli, invariati rispetto all'API I file prodotti dagli engine basati su OpenAI non vengono più ricodificati prima del salvataggio — il file su disco è ora esattamente quello restituito dall'API, byte per byte, invece di essere sempre convertito in un'immagine a 4 canali (RGBA) a prescindere dalla trasparenza richiesta. I lavori non trasparenti producono quindi file più piccoli, e un eventuale profilo colore della sorgente viene preservato automaticamente.
  • Corretto un errore di configurazione dello stesso giorno L'opzione "fedeltà" (input_fidelity) era stata attivata per un modello che non la supporta, causando il fallimento di ogni lavoro sull'engine di default. L'app ora si rifiuta di avviarsi con quella combinazione, invece di fallire lavoro per lavoro in produzione.