Usa spicyapi/image-upscaler-v1/upscale per ingrandire un'immagine già finita. Scegli 2k, 4k o 8k in base ai pixel che serve al ritaglio finale: i livelli sono budget di pixel di circa 4, 17 e 67 megapixel, non dimensioni fisse del lato lungo. Tutti e tre costano $0.012 per immagine di output (1000 immagini costano $12), in JPEG, PNG o WebP. Provali prima nel Playground, poi esegui il breve esempio Python o affidalo a un Agent.
Scegli il livello in base al ritaglio finale
L'Image Upscaler mantiene il rapporto d'aspetto della sorgente. Un ritratto 1024×1536 restituisce:
| Richiesta | Budget di pixel | Dimensione restituita | Prezzo |
|---|---|---|---|
2k | circa 4 MP | 1672×2508 | $0.012/immagine |
4k (predefinito) | circa 17 MP | 3344×5017 | $0.012/immagine |
8k | circa 67 MP | 6689×10033 | $0.012/immagine |
Un altro rapporto d'aspetto dà altre dimensioni. Se ragioni in «2×» o «4×», l'ingrandimento lineare è la radice quadrata del budget divisa per i megapixel della sorgente:
| Sorgente | 2k | 4k | 8k |
|---|---|---|---|
| 1024×1536 (1.6 MP) | 1.6× | 3.3× | 6.5× |
| 1920×1080 (2.1 MP) | 1.4× | 2.8× | 5.7× |
| 4000×3000 (12 MP foto da telefono) | 0.6× (riduce) | 1.2× | 2.4× |
Un livello inferiore al numero di pixel della sorgente riduce: un input da 3344×5017 inviato a 2k restituisce 1672×2509. Se la sorgente soddisfa già la destinazione, esportatela normalmente; questo endpoint non ha una modalità di nitidezza alla dimensione originale.
Per una card web mostrata larga 600 pixel a densità 2×, servono 1200 pixel sul ritaglio finale. Se quel ritaglio mantiene metà della larghezza della sorgente, il master ne richiede 2400 in larghezza. Il ritratto da 1672 pixel con 2k non basta; 4k lo copre.
Per la stampa, moltiplica i pollici per la densità richiesta dalla stampante. Un'immagine da 10×15 pollici a 300 pixel per pollice richiede 3000×4500 pixel, dimensioni che il ritratto 4k copre senza ritaglio. Cambiare i metadati di densità non aggiunge pixel, e un ritaglio più stretto richiede un nuovo calcolo.
Scegli 8k solo quando il ritaglio lo richiede. Il prezzo è lo stesso, ma 67 megapixel corrispondono a circa 268 MB di dati pixel grezzi a quattro canali, cosa che conta per la memoria di editing, e il JPEG scaricato arriva a circa 8 MB a quel livello.
Prepara una sorgente pulita
Completa prima la rimozione di oggetti, il ritaglio e altre modifiche, e parti dal miglior originale, non da una miniatura di un sito web. L'input è un JPEG, PNG o WebP di massimo 10 MB, quindi un master di stampa grande potrebbe richiedere un'esportazione prima dell'invio. Per un catalogo di cancelleria fittizio, usa una fotografia approvata di una penna stilografica e della sua scatola, e tieni un riferimento separato per il nome inciso esatto: l'ingrandimento può trasformare segni ambigui in lettere sicure ma sbagliate.
Scegli output_format in base a cosa succede dopo. jpeg (predefinito) è il più piccolo; il PNG è lossless ma diverse volte più grande a 8k; WebP sta nel mezzo. Il PNG non rende vero un dettaglio ricostruito. Non ci sono prompt, né larghezza/altezza esatta, né forza di ripristino del volto, né seed.

Illustrazione delle aree di ispezione, non un risultato di upscaling.
Prova prima nel Playground
- Apri la pagina Image Upscaler e resta nella scheda Playground, in vista Form. Accedi con un account con saldo per eseguire.
- Trascina la tua immagine in Input image (JPG, PNG o WEBP, fino a 10 MB), oppure incolla un link con Asset URL.
- Imposta Resolution su 2K, 4K o 8K e Output format su JPEG, PNG o WebP.
- Esegui, poi controlla il risultato alla sua dimensione finale di card o di stampa.
Prova qui la tua sorgente migliore prima di scrivere codice. Il corpo della richiesta nel Playground è lo stesso JSON che l'API accetta, quindi un'impostazione che funziona qui si copia direttamente nel codice.
Poi chiamatela dal codice
Installa l'SDK Python (pip install spicyapi), imposta SPICY_API_KEY nel tuo ambiente ed esegui:
Installa Pillow (python -m pip install Pillow) per la validazione del download in questo esempio. Il file di output originale viene sostituito solo dopo che il nuovo JPEG è stato decodificato con successo.
import os
from pathlib import Path
import tempfile
import urllib.request
import uuid
from PIL import Image
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
source = client.upload_file("./fountain-pen-master.png") # local file becomes a spicy:// URI
task = client.create_task(
model="spicyapi/image-upscaler-v1/upscale",
input_data={"image_url": source["uri"], "resolution": "4k", "output_format": "jpeg"},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
print(f"Task ID: {task['taskId']}", flush=True)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
assets = [a for a in output_assets(final)
if a.get("url") and not a.get("pending") and not a.get("unavailable")]
if not assets:
raise RuntimeError(f"Task {task['taskId']} has no downloadable output yet")
request = urllib.request.Request(assets[0]["url"], headers={"User-Agent": "upscale-example/1.0"})
target = Path("upscaled.jpg")
temporary = None
try:
with tempfile.NamedTemporaryFile(dir=target.parent, suffix=".jpg", delete=False) as out:
temporary = Path(out.name)
with urllib.request.urlopen(request, timeout=60) as response:
out.write(response.read())
with Image.open(temporary) as image:
if image.format != "JPEG":
raise ValueError("Expected a JPEG output")
image.load() # reject unreadable or truncated data before replacing the keeper
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Un'esecuzione richiede circa 45 secondi. Cambia livello o formato modificando resolution e output_format. Caricamenti, attesa, tentativi ed errori sono coperti nella guida alle task e nel riferimento dell'SDK Python. I link del risultato durano circa 20 minuti e i file generati vengono eliminati entro massimo 14 giorni, quindi copia il risultato nel tuo archivio.
Oppure fai eseguire a un Agent
Quando un assistente deve ingrandire le tue immagini, tutti e tre gli strumenti ufficiali mostrano il prezzo e chiedono conferma prima di una chiamata a pagamento.
- CLI.
spicyapiesegue una task da terminale (npx @spicyapi/clifunziona senza installazione). Metti{"image_url": "spicy://...", "resolution": "4k"}ininput.json, usando l'URI che il caricamento stampa:
``bash spicyapi files upload ./fountain-pen-master.png spicyapi tasks create --model spicyapi/image-upscaler-v1/upscale --input-file input.json --wait ``
- Server MCP. Aggiungi il server MCP al tuo assistente, poi chiedi: «Upscale ./fountain-pen-master.png to 4K with Image Upscaler.» Chiama
spicyapi_upload_file, poispicyapi_task_create, che si ferma per la conferma del prezzo, poispicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstalla l'Agent Skill, che fa leggere a un assistente di programmazione lo schema del modello in tempo reale invece di indovinare i campi. Non può eseguire task da solo, quindi usalo insieme alla CLI o a MCP.
Decidi se i pixel aggiuntivi servono
Controlla il risultato nel layout finale della card o della stampa, poi a dimensione piena su pennino, incisione e bordi della scatola: i pixel aggiuntivi servono a quell'uso mantenendo il prodotto fedele?
| Sintomo | Passo successivo |
|---|---|
| L'output è più piccolo della sorgente | Confronta i pixel della sorgente con il budget del livello; sali di un livello solo se la destinazione richiede un ingrandimento. |
| Le lettere incise sembrano nitide ma sbagliate | Sostituisci la sorgente con una foto più nitida o con artwork approvato; un livello più grande non può verificare lettere mancanti. |
| Compaiono contorni chiari attorno ai bordi scuri | Confronta con l'originale inviato. Se è stata la sua stessa nitidezza a creare il contorno, esporta una sorgente più pulita prima di riprovare. |
| Il volto sembra levigato ma diverso | Confronta occhi, espressione e attaccatura dei capelli con l'originale; scarta quel candidato invece di approvare la sola nitidezza. |
| La pagina web scarica un'immagine enorme | Tieni il master approvato ed esporta una derivata ordinaria più piccola per lo spazio mostrato. |
| L'API rifiuta un campo in più | Rimuovi scale, face_restore, width e controlli simili; questo endpoint non ne ha. |

Illustrazione di dettagli del ritratto da confrontare, non dettaglio facciale recuperato.
Per i ritratti fittizi di adulti, SpicyAPI non esegue alcun controllo di sicurezza su questo strumento, quindi il consenso e gli obblighi legali restano tuoi. Gli input NSFW moderati e avanzati vengono ingranditi normalmente; esegui un campione del tuo materiale prima di un batch.
Se il master è buono ma una piccola card perde l'incisione, regola quella derivata o riduci lo zoom; un altro passaggio di IA non è la prima soluzione. Se ti serve un'inquadratura più larga invece di più pixel, vedi l'estensione verso un nuovo rapporto d'aspetto; per i clip, vedi l'upscaling video.






