GPT-6 Sol e Claude Opus 5.5 disponibiliGPT-6 Sol a metà prezzo rispetto a 5.6 Sol

API di virtual try-on: cambiare outfit al modello con GPT Image 2

Una foto e un prompt cambiano l'outfit. Qui ci sono il codice della richiesta, tre cambi che abbiamo eseguito il 28 ottobre 2026 e dove la modifica sbanda.

Kiki, OmniaKey COO7 min di lettura
In questa pagina

Sì, con un prompt testuale. L'endpoint di modifica di GPT-Image 2 ha cambiato l'outfit su una sola foto e ha mantenuto posa, volto e sfondo nei nostri tre test del 28 ottobre 2026. Non esiste un campo dedicato al capo, ma una seconda foto del capo ha cambiato la lunghezza del vestito nella nostra esecuzione. Controlla ogni risultato a occhio.

La richiesta è una modifica di immagine sull'API media di OmniaKey: una foto sorgente, un prompt e immagini di riferimento opzionali. Abbiamo verificato la funzione qui sotto il 28 ottobre 2026 con un prompt diverso (un impermeabile giallo) su un JPEG da 1024 pixel del modello base, e ha restituito un PNG 1024x1536.

Cosa può e cosa non può fare una modifica per il try-on

Una modifica di immagine parte da una foto sorgente e da un prompt. L'operazione è edit, la sorgente viaggia inline in Base64 e il prompt nomina il nuovo outfit; la documentazione dell'API immagini di OmniaKey (verificata il 28 ottobre 2026) ammette anche più immagini di riferimento in un array images. Il risultato è un fotogramma nuovo, quindi il capo cambia e la persona resta ferma: nelle nostre esecuzioni volto, posa, capelli e sfondo da studio sono rimasti uguali.

Due limiti contano per un try-on: non c'è un campo separato per il capo, quindi il modello disegna l'indumento dalla tua descrizione o da una seconda foto, e il fotogramma nuovo può toccare dettagli che non hai nominato. Una funzione di try-on dovrebbe mostrare il risultato per la revisione e lasciare che chi compra giudichi la somiglianza. La stessa operazione serve anche a rimuovere un oggetto da una scena; per le modifiche guidate da istruzioni, vedi la guida all'alternativa a FLUX Kontext.

Invia la foto e il prompt dell'outfit

Invia un POST a https://api.omniakey.com/v1/media/tasks con una chiave bearer, un corpo JSON e l'header Idempotency-Key; la documentazione dell'API immagini di OmniaKey (verificata il 28 ottobre 2026) dice che la creazione restituisce HTTP 202 e un id del task. Interroga l'URL del task finché lo stato è queued o processing; succeeded significa che gli asset sono pronti, mentre un task failed porta error.code e error.message e non viene addebitato.

Compila i campi del task così:

CampoValore
modelgpt-image-2
typeimage
operationedit
input.promptl'istruzione sull'outfit
input.imagela foto sorgente come oggetto data e mime_type
input.imagesfoto di riferimento aggiuntive
parameters.sizeWIDTHxHEIGHT
parameters.qualitylow, medium, high o auto
parameters.n1

Tieni la richiesta sotto 1 MiB, perché il Base64 inline rientra in quel limite. Il numero di campioni deve essere 1 e l'API restituisce sempre un PNG opaco, quindi leggi le dimensioni reali dal file scaricato.

Ecco la funzione:

python
import base64
import json
import os
import time
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]


def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)


def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
    with open(source_path, "rb") as f:
        image = base64.b64encode(f.read()).decode()
    body = {
        "model": "gpt-image-2",
        "type": "image",
        "operation": "edit",
        "input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
        "parameters": {"size": size, "quality": quality},
    }
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    for _ in range(150):
        time.sleep(4)
        state = request("GET", f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # link firmato: vale circa un'ora, scarica subito
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task
if __name__ == "__main__":
    task = edit_image(
        "vto-base.jpg",
        "Change the outfit: she now wears a red satin slip dress with thin straps that falls to mid-calf. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.",
        "vto-slip.png",
        size="1024x1536",
    )
    print("task", task)

L'URL firmato dell'asset vale circa un'ora e il file resta disponibile per 24 ore, secondo la stessa documentazione, quindi scaricalo appena il task riesce. La nostra verifica del 28 ottobre 2026 ha usato il prompt dell'impermeabile giallo su un JPEG da 1024 pixel del modello base e ha restituito un PNG 1024x1536. Lo script invia un header User-Agent: quello predefinito di Python è stato rifiutato con HTTP 403 nella nostra esecuzione, e aggiungendo l'header ha funzionato.

Tre cambi di outfit che abbiamo eseguito

Tutti e tre i cambi sono partiti dalla stessa foto sintetica: una donna con una T-shirt bianca girocollo e jeans blu scuro su uno sfondo da studio grigio chiaro uniforme, creata a 1024x1536 e qualità medium nelle nostre esecuzioni del 28 ottobre 2026.

Il cambio 1 chiedeva uno slip dress in raso rosso con spalline sottili, lungo fino a metà polpaccio. Il vestito è uscito, e posa, volto, capelli e sfondo sono rimasti uguali. Le sneakers bianche sono diventate sandali con cinturini bianchi senza che fosse chiesto.

Il cambio 2 chiedeva un blazer in lana verde scuro sopra una camisole di seta color crema, con pantaloni neri a gamba dritta. Tutti e tre i capi sono comparsi e le sneakers bianche sono rimaste.

Il cambio 3 chiedeva una maglia a manica lunga a righe orizzontali blu navy e bianche, con un piccolo cuore rosso ricamato sul petto a sinistra. Le righe e il cuore sono finiti sul petto a sinistra; i jeans blu scuro e le sneakers bianche sono rimasti.

Quattro ritratti in studio: la T-shirt bianca e i jeans originali, uno slip dress in raso rosso, un blazer verde scuro e una maglia a righe
Originale e tre cambi di outfit solo testuali. Posa, volto e sfondo da studio identici in ognuno.

Ogni persona e ogni scena qui è sintetica, e abbiamo eseguito ogni prompt una volta sola, quindi ogni immagine è un campione.

Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1024x1536, quality medium.

Una foto del capo come secondo riferimento

Per avvicinarti di più, invia il capo come seconda immagine. Abbiamo messo la foto della persona per prima, lo slip dress in raso rosso steso in piano per seconda e usato input.images con questo prompt: "Dress the woman in the first image in the red satin slip dress shown in the second image. Keep her pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos."

Il vestito arrivava a terra, vicino alla lunghezza della foto stesa in piano. La versione solo testuale dello stesso vestito si fermava a metà polpaccio. Nel nostro unico campione, la foto del capo ha portato la lunghezza che le parole avevano lasciato aperta.

Tre pannelli: uno slip dress rosso steso in piano, lo stesso vestito sulla modella fino a terra e una versione solo testuale che finisce a metà polpaccio
A sinistra: la foto del capo che abbiamo inviato. Al centro: con due immagini il vestito segue la lunghezza della foto. A destra: lo stesso vestito descritto solo a parole.

Dove sbanda

Le deviazioni sono comparse nelle parti lasciate fuori dal prompt: il cambio con lo slip dress ha cambiato le scarpe, mentre il prompt nominava solo il vestito. Controlla volto, mani, orlo, scarpe e qualsiasi fantasia a dimensione piena prima di mostrare un risultato a chi compra. Non abbiamo testato un capo con logo stampato, la fantasia esatta del tessuto di una foto prodotto o più di due immagini.

Quando conviene un'API try-on dedicata

Un'API try-on dedicata riceve la persona e il capo come due input separati. La pagina di Google Vertex AI "Generate Virtual Try-On Images" (ultimo aggiornamento 26 ottobre 2026; verificata il 28 ottobre 2026) dice: "You provide an image of a person and an image of a clothing product." La stessa pagina elenca personImage e productImages come campi Base64, un sampleCount da 1 a 4 e l'ID modello virtual-try-on-001. Riporta anche un avviso che la documentazione di Vertex AI non viene più aggiornata.

Scegli quel tipo di endpoint quando la foto del capo è la fonte di verità e ti servono più campioni per richiesta. Scegli la modifica di GPT-Image 2 quando un'unica pipeline per cambi di outfit e altre modifiche conta più dei campioni per chiamata.

La pagina dei prezzi di OpenAI (verificata il 28 ottobre 2026) dice che gpt-image-2 si fattura a token: la pagina elenca le tariffe per token e nessuna tabella per immagine, e rimanda a un calcolatore nella guida alla generazione di immagini. La tariffa attuale di OmniaKey è nella pagina prezzi.

Un template di prompt per cambiare outfit

Usa la forma che ha funzionato nelle nostre esecuzioni: nomina prima il capo, poi blocca la persona e il set.

Change the outfit: she now wears [garment, colour, fabric, length]. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.

  • Capo: una frase con colore, tessuto e lunghezza. "A red satin slip dress with thin straps that falls to mid-calf" ha dato un cambio netto.
  • Blocchi: posa, volto, capelli, corpo, sfondo, luce. Elencali esplicitamente nel prompt.
  • Chiusura: "Photorealistic, no text, no logos." I nostri prompt finivano così.
  • Scarpe: nominale se devono restare, per esempio "keep the white sneakers". Nel cambio con lo slip dress sono cambiate quando non erano nel testo.

Aggiungi una seconda immagine quando la lunghezza conta più delle parole: persona per prima, capo per secondo, e nel prompt richiama "the first image" e "the second image", come abbiamo fatto noi. Per l'ordine generale del prompt, vedi la guida ai prompt di GPT Image 2.

Domande frequenti

Esiste un endpoint try-on dedicato nell'API di GPT Image 2?

No. La pagina del modello su OmniaKey (verificata il 28 ottobre 2026) elenca testo in immagine e modifica di immagine. Nelle nostre esecuzioni un try-on è stato una modifica con un prompt testuale e una seconda immagine opzionale.

Posso inviare una foto del capo?

Sì, come seconda immagine di riferimento in input.images. Nella nostra esecuzione del 28 ottobre 2026 la lunghezza del vestito si è adeguata alla foto stesa in piano.

Il volto resta lo stesso?

Nei tre cambi e nell'esecuzione con due riferimenti sì, a occhio. Controlla ogni risultato a dimensione piena prima di mostrarlo.

Circa un'ora, secondo la documentazione dell'API immagini di OmniaKey verificata il 28 ottobre 2026, e il file resta 24 ore. Scaricalo appena il task riesce.

Che dimensione devo chiedere?

Passa size come WIDTHxHEIGHT, per esempio 1024x1536, poi leggi le dimensioni reali dal PNG scaricato. Le nostre esecuzioni usavano 1024x1536 a qualità medium.

Parti da una foto e da un prompt per l'outfit. La pagina di GPT-Image 2 copre il modello; le tariffe attuali sono a parte.

Modelli citati in questo articolo

API di virtual try-onGPT Image 2modifica di immaginicambio outfitAPI

Articoli correlati

Articoli recenti