HiAPI
Blog

Guida all'uso

Flux-2-Klein-9b image-to-image: elaborazione di foto di prodotti per l'e-commerce

Workflow pratico per modificare foto di prodotti esistenti con flux-2-klein-9b/image-to-image sull'API hiapi — con prompt reali, output reali e codice per l'elaborazione in batch.

Aug 14, 2026
Flux-2-Klein-9b image-to-image: elaborazione di foto di prodotti per l'e-commerce

Perché modificare le foto di prodotto invece di generarne di nuove

Il problema che la maggior parte dei cataloghi e-commerce deve affrontare non è "generare da zero", bensì "una foto, cinque utilizzi". Il venditore scatta una foto principale, spesso su un piano di lavoro disordinato o con un'illuminazione mediocre, e poi ha bisogno di una versione pulita su sfondo bianco per la griglia del negozio, di una variante di colore per ogni SKU e di immagini ambientate per la pubblicità e i social media. Rifotografare per ogni variante è lento; generare ogni immagine da zero con il text-to-image non garantisce che il risultato sia esattamente identico al prodotto che stai effettivamente vendendo.

flux-2-klein-9b/image-to-image è nato proprio per risolvere il secondo problema: prende una foto di prodotto esistente più un'istruzione di modifica e restituisce una nuova immagine in cui tutto ciò che non hai chiesto di cambiare — forma, proporzioni, tappo, logo — resta invariato. È il livello più grande e con maggiore fedeltà della famiglia FLUX.2 [klein] su hiapi, superiore in qualità e prezzo rispetto a flux-2-klein-4b/image-to-image.

Quello che segue è un workflow completo in tre fasi basato su un'unica foto di partenza: prima ripulisci una foto disordinata "prima" trasformandola in un'immagine principale pronta per il catalogo, poi da questa immagine principale estrai varianti di colore e varianti ambientate — tre modifiche reali, tre prompt reali e uno script batch per riutilizzare lo stesso schema su tutto il catalogo.

La foto di partenza

Questa è esattamente il tipo di foto "prima" che un venditore caricherebbe davvero: una borraccia termica in acciaio inossidabile spazzolato con tappo a vite in plastica nera opaca, fotografata su un piano di cucina disordinato accanto a una tazza di caffè e a uno strofinaccio piegato, con luce mista irregolare e composizione decentrata. Può servire come riferimento, ma non è adatta come immagine per la scheda prodotto.

Il prompt usato per generare questa foto di partenza (tramite flux-2-klein-9b/text-to-image):

A slightly imperfect phone photo of a brushed stainless steel insulated water bottle with a matte black plastic screw cap, standing on a cluttered kitchen counter next to a ceramic coffee mug and a folded blue dish towel, mixed warm ceiling light and cool window daylight creating an uneven color cast, faint reflections and fingerprint smudges on the counter, off-center composition, casual amateur snapshot quality, not professional photography

Fase 1: pulizia in studio — dal piano disordinato alla foto pronta per il catalogo

Prompt utilizzato:

Keep the water bottle exactly as it is: same brushed stainless steel body, same matte black screw cap, same proportions and shape. Remove the cluttered counter, coffee mug, and towel completely. Replace the background with a seamless pure white studio background. Correct the lighting to even, shadowless studio lighting from the front, center the bottle in the frame, sharp focus, no reflections, no smudges, clean e-commerce catalog product photography.

Questa è la modifica più importante dell'intero workflow: una singola chiamata trasforma uno scatto da smartphone in un'immagine su sfondo bianco pronta per il negozio, mantenendo forma e tappo della borraccia perfettamente invariati. Questo risultato pulito diventerà l'immagine principale — tutte le varianti a valle di questa guida vengono generate da questa immagine, non dalla foto disordinata originale, così la deriva non si accumula tra una modifica e l'altra.

Fase 2: generare una variante di colore dall'immagine principale pulita

Prompt utilizzato:

Keep the bottle's shape, screw cap, proportions, and pure white studio background exactly as they are. Change only the body color and finish from brushed stainless steel to a matte sage green, keep the black cap unchanged, keep the same lighting and shadow, e-commerce catalog product photography.

Questo è lo scenario multi-SKU: una linea di prodotto con cinque colori, senza bisogno di cinque servizi fotografici separati. Partendo dall'immagine principale pulita e limitando il prompt a cambiare solo il colore, tappo, proporzioni, illuminazione e sfondo restano completamente fissi — cambia solo il colore del materiale del corpo.

Fase 3: generare una variante ambientata dalla stessa immagine principale

Prompt utilizzato:

Keep the water bottle exactly as it is: brushed stainless steel body, matte black cap, proportions unchanged. Replace the plain white studio background with an outdoor lifestyle scene: the bottle resting on a moss-covered granite rock beside a hiking trail, soft early-morning sunlight filtering through pine trees, shallow depth of field, warm natural color grade, outdoor lifestyle product photography.

Stessa immagine principale, destinazione diversa: questa è l'immagine per la pubblicità, i post social o il visual principale di una landing page — un contesto outdoor invece di uno sfondo da catalogo, con l'identità del prodotto saldamente ancorata dalla stessa frase di ancoraggio "keep as is" presente in ciascuno dei prompt sopra.

Perché queste modifiche sono affidabili

  • Prima ancora le parti invariabili, poi descrivi la modifica. Ognuno dei prompt sopra inizia indicando ciò che non deve cambiare — forma, tappo, proporzioni — e solo dopo menziona il nuovo sfondo o colore. Questo ordine è la chiave per mantenere bloccata l'identità del prodotto attraverso le tre modifiche consecutive, invece di farla spostare un po' alla volta.
  • Modifica a catena a partire dall'immagine principale pulita, non dalla foto originale. Le fasi 2 e 3 partono dall'output della fase 1, non dalla foto disordinata originale. Modificare a partire da una base pulita e corretta è più affidabile che cercare di sistemare il disordine e sostituire lo sfondo nello stesso prompt.
  • Un solo cambiamento per prompt. La variante di colore cambia solo il colore; la variante ambientata cambia solo lo sfondo. Nessuno dei due prompt richiede due cambiamenti non correlati contemporaneamente.
  • flux-2-klein-9b/image-to-image accetta una sola immagine di riferimento per chiamata. A differenza di alcuni modelli di editing che accettano più immagini di riferimento, lo schema di questo modello è volutamente essenziale: una stringa prompt e un array image_urls con al massimo un'immagine. L'endpoint image-to-image non ha i parametri resolution né aspect_ratio — l'output segue le dimensioni della foto di input, quindi oltre al prompt e all'immagine sorgente non c'è nulla da configurare.

Modifica in batch del catalogo

Le tre modifiche sopra condividono la stessa forma di richiesta: un URL di immagine di riferimento più un prompt di modifica, inviati all'endpoint asincrono dei task di hiapi. Lo snippet di codice qui sotto itera questo schema su una lista di tuple (base_image_url, prompt, output_name) — esattamente la struttura che useresti per elaborare in un colpo solo l'intero catalogo con pulizia, varianti di colore e varianti ambientate.

import os
import time
import requests

API_BASE = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
MODEL = "flux-2-klein-9b/image-to-image"


def submit_edit(base_image_url: str, prompt: str) -> str:
    resp = requests.post(
        API_BASE,
        headers={"Authorization": f"Bearer {TOKEN}"},
        json={
            "model": MODEL,
            "input": {
                "prompt": prompt,
                "image_urls": [base_image_url],
            },
        },
        timeout=60,
    )
    resp.raise_for_status()
    return resp.json()["data"]["taskId"]


def wait_and_download(task_id: str, out_path: str, poll_s: int = 5, timeout_s: int = 300) -> None:
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        r = requests.get(
            f"{API_BASE}/{task_id}",
            headers={"Authorization": f"Bearer {TOKEN}"},
            timeout=30,
        )
        task = r.json().get("data", {})
        if task.get("status") == "success":
            url = task["output"][0]["url"]
            img = requests.get(url, timeout=120)
            with open(out_path, "wb") as f:
                f.write(img.content)
            return
        if task.get("status") == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(poll_s)
    raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")


# One entry per product / variant. Chain color and lifestyle edits from a
# clean master, not the raw source photo, for best consistency.
batch = [
    ("https://cdn.example.com/products/bottle-raw.jpg",
     "Keep the bottle exactly as it is: same body, same cap, same "
     "proportions. Remove the cluttered background completely. Replace it "
     "with a seamless pure white studio background and even, shadowless "
     "lighting, clean e-commerce catalog product photography.",
     "bottle-clean-master.jpg"),
    ("https://cdn.example.com/products/bottle-clean-master.jpg",
     "Keep the bottle's shape, cap, proportions, and white studio "
     "background exactly as they are. Change only the body color to matte "
     "sage green, keep the cap unchanged.",
     "bottle-sage-green.jpg"),
    ("https://cdn.example.com/products/bottle-clean-master.jpg",
     "Keep the bottle exactly as it is: body, cap, proportions unchanged. "
     "Replace the white studio background with an outdoor lifestyle scene "
     "on a mossy rock beside a hiking trail, soft morning sunlight.",
     "bottle-lifestyle-hiking.jpg"),
]

for base_url, prompt, out_name in batch:
    task_id = submit_edit(base_url, prompt)
    wait_and_download(task_id, out_name)
    print(f"saved {out_name}")

Ogni chiamata al task è indipendente, quindi per un catalogo completo di solito conviene eseguire un piccolo pool in parallelo, anziché un ciclo strettamente sequenziale — il tempo di elaborazione dell'API dei task è il collo di bottiglia, non il tuo client. Nota che le fasi 2 e 3 puntano entrambe a bottle-clean-master.jpg, cioè all'output della fase 1: generare a catena dal risultato pulito, anziché dal caricamento originale, è la chiave per mantenere coerenti tra loro le varianti di colore e quelle ambientate.

Prezzi

flux-2-klein-9b/image-to-image è fatturato per immagine, con un prezzo fisso indipendentemente dalle dimensioni dell'output. Al 2026-08, ogni modifica image-to-image costa $0.03143 per immagine; l'endpoint text-to-image abbinato (usato in questa guida per generare la foto di partenza) costa $0.00858 per immagine. Entrambi sono nettamente superiori al livello più piccolo flux-2-klein-4b/image-to-image che costa $0.00715 per modifica — il 9B ripaga questo costo aggiuntivo con una maggiore fedeltà dell'output, soprattutto sulle modifiche ricche di dettagli come materiali e variazioni di colore. Consulta la pagina dei prezzi per le tariffe aggiornate di tutti i modelli, poiché i prezzi possono cambiare.

Domande frequenti

flux-2-klein-9b/image-to-image supporta più immagini di riferimento per chiamata? No. Lo schema accetta una sola immagine in image_urls (maxItems: 1). Per modifiche che richiedono di unire due immagini sorgente distinte, non è il modello adatto — è pensato per la modifica con un solo riferimento, come la sostituzione dello sfondo, il cambio di colore e la pulizia.

Posso controllare la risoluzione dell'output? No — l'endpoint image-to-image non ha i parametri resolution né aspect_ratio. L'output segue le dimensioni della foto di input. Se hai bisogno di una dimensione specifica dell'output, ridimensiona l'immagine sorgente prima di inviarla, oppure ridimensiona il risultato in seguito.

In cosa è diverso da flux-2-klein-4b/image-to-image? Stessa forma di richiesta, stesso schema con immagine di riferimento singola, ma il 9B costa di più per modifica ($0.03143 contro $0.00715), in cambio di una maggiore fedeltà — è la scelta migliore quando le modifiche del catalogo riguardano dettagli fini (texture dei materiali, precisione del colore) anziché semplici sostituzioni di sfondo.

Perché modificare a catena dall'"immagine principale pulita" invece che dalla foto originale ogni volta? Modificare dall'immagine originale disordinata richiede al modello di sistemare il disordine e applicare il nuovo cambiamento nello stesso passaggio, il che aumenta la probabilità di una deriva indesiderata. Pulire una volta, poi diramare ogni variante da quell'unico risultato pulito, mantiene ogni immagine a valle coerente con le altre.

Posso elaborare l'intero catalogo in una sola volta? Sì — lo script batch sopra è proprio questo schema: scorrere le tuple (image, prompt, output name), inviare ognuna come task indipendente e far girare un piccolo numero di richieste in parallelo, anziché un lungo ciclo sequenziale.

Provalo tu stesso

Ogni modifica di questa guida — pulizia, variante di colore, variante ambientata — richiede una sola chiamata API, generata a catena a partire da un'unica foto di partenza. Se hai foto di prodotto esistenti e vuoi ottenerne varianti pronte per il catalogo senza rifotografare, la guida rapida alla documentazione di hiapi illustra autenticazione e prima richiesta, completabili in pochi minuti.

Inizia a creare con artefatti IA persistenti

Ottieni la tua chiave API e chiama modelli di immagini, video e audio tramite un'unica API basata sui task.

Leggi la documentazione API