Aller au contenu principal

API de mise à l'échelle d'images : choisissez 2K, 4K ou 8K et téléchargez le résultat

2K, 4K ou 8K selon les pixels du recadrage final, essayez dans le Playground, lancez un exemple Python et corrigez gravures, visages et taille de fichier.

Auteur
Lydia
Publié
Lecture
8 min de lecture
Mis à jour
Illustration éditoriale d'une photographe aux cheveux roux qui utilise une loupe pour inspecter un grand tirage portrait dans une salle d'impression lumineuse ; ce n'est pas un résultat de l'API de mise à l'échelle.

Utilisez spicyapi/image-upscaler-v1/upscale pour agrandir une image terminée. Choisissez 2k, 4k ou 8k selon les pixels dont votre recadrage final a besoin : les paliers sont des budgets de pixels d'environ 4, 17 et 67 mégapixels, pas des tailles fixes de côté long. Les trois coûtent $0.012 par image de sortie (1000 images coûtent $12), en JPEG, PNG ou WebP. Essayez d'abord dans le Playground, puis lancez le court exemple Python ou confiez-le à un Agent.

Choisissez le palier selon le recadrage final

L'Image Upscaler conserve le rapport d'aspect de la source. Un portrait de 1024×1536 renvoie :

RequêteBudget de pixelsTaille renvoyéePrix
2kenviron 4 MP1672×2508$0.012/image
4k (par défaut)environ 17 MP3344×5017$0.012/image
8kenviron 67 MP6689×10033$0.012/image

Un autre rapport d'aspect donne d'autres dimensions. Si vous raisonnez en « 2× » ou « 4× », l'agrandissement linéaire est la racine carrée du budget divisée par les mégapixels de la source :

Source2k4k8k
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 photo de téléphone)0.6× (réduit)1.2×2.4×

Un palier inférieur au nombre de pixels de la source réduit : une entrée de 3344×5017 envoyée en 2k renvoie 1672×2509. Si la source atteint déjà la destination, exportez-la normalement ; cet endpoint n'a pas de mode de netteté à la taille d'origine.

Pour une carte web affichée sur 600 pixels de large à densité 2×, il vous faut 1200 pixels sur le recadrage final. Si ce recadrage garde la moitié de la largeur source, le master en faut 2400 en largeur. Le portrait de 1672 pixels en 2k est trop court ; 4k le couvre.

Pour l'impression, multipliez les pouces par la densité demandée par votre imprimeur. Une image de 10×15 pouces à 300 pixels par pouce doit faire 3000×4500 pixels, ce que le portrait 4k couvre sans recadrage. Modifier les métadonnées de densité n'ajoute aucun pixel, et un recadrage plus serré demande un nouveau calcul.

Ne choisissez 8k que si le recadrage en a besoin. Le prix est identique, mais 67 mégapixels représentent environ 268 MB de données de pixels brutes sur quatre canaux, ce qui compte pour la mémoire d'édition, et le JPEG téléchargé atteint environ 8 MB à ce palier.

Préparez une source propre

Terminez d'abord la suppression d'objets, le recadrage et les autres retouches, et partez du meilleur original, pas d'une miniature de site web. L'entrée est un JPEG, PNG ou WebP de 10 Mo au maximum, donc un grand master d'impression peut devoir être exporté avant l'envoi. Pour un catalogue de papeterie fictif, utilisez une photo approuvée d'un stylo plume et de son étui, et gardez une référence séparée pour le nom gravé exact : l'agrandissement peut transformer des marques ambiguës en lettres assurées mais fausses.

Choisissez output_format selon ce qui vient ensuite. jpeg (par défaut) est le plus petit ; le PNG est sans perte mais plusieurs fois plus gros en 8k ; WebP se situe entre les deux. Le PNG ne rend pas un détail reconstruit plus vrai. Il n'y a ni prompt, ni largeur/hauteur exacte, ni force de restauration du visage, ni seed.

Une photographe fictive inspecte un stylo plume avec des cercles de détail qui montrent sa plume dorée, la gravure du corps et le reflet d'un étui crème.

Illustration des zones d'inspection, pas un résultat de mise à l'échelle.

Essayez d'abord dans le Playground

  1. Ouvrez la page Image Upscaler et restez dans l'onglet Playground, en vue Form. Connectez-vous avec un compte provisionné pour lancer.
  2. Déposez votre image dans Input image (JPG, PNG ou WEBP, jusqu'à 10 Mo), ou collez un lien avec Asset URL.
  3. Réglez Resolution sur 2K, 4K ou 8K et Output format sur JPEG, PNG ou WebP.
  4. Lancez, puis vérifiez le résultat à sa taille finale de carte ou d'impression.

Essayez ici votre meilleure source avant d'écrire du code. Le corps de requête du Playground est le même JSON que celui que l'API accepte, donc une configuration qui fonctionne ici se copie telle quelle dans le code.

Appelez-la ensuite depuis le code

Installez le SDK Python (pip install spicyapi), définissez SPICY_API_KEY dans votre environnement et exécutez :

Installez Pillow (python -m pip install Pillow) pour la validation du téléchargement dans cet exemple. Le fichier de sortie d'origine n'est remplacé qu'après le décodage réussi du nouveau JPEG.

python
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)

Une exécution prend environ 45 secondes. Changez de palier ou de format en modifiant resolution et output_format. Les envois, l'attente, les reprises et les erreurs sont couverts dans le guide des tâches et la référence du SDK Python. Les liens de résultat durent environ 20 minutes et les fichiers générés sont supprimés au plus tard après 14 jours, alors copiez le résultat dans votre propre stockage.

Ou laissez un Agent l'exécuter

Quand un assistant doit agrandir vos images, les trois outils officiels affichent le prix et vous demandent avant un appel payant.

  • CLI. spicyapi exécute une tâche depuis un terminal (npx @spicyapi/cli fonctionne sans installation). Mettez {"image_url": "spicy://...", "resolution": "4k"} dans input.json, en utilisant l'URI affichée par l'envoi :

``bash spicyapi files upload ./fountain-pen-master.png spicyapi tasks create --model spicyapi/image-upscaler-v1/upscale --input-file input.json --wait ``

  • Serveur MCP. Ajoutez le serveur MCP à votre assistant, puis demandez : « Upscale ./fountain-pen-master.png to 4K with Image Upscaler. » Il appelle spicyapi_upload_file, puis spicyapi_task_create, qui s'arrête pour votre confirmation de prix, puis spicyapi_task_wait.
  • Skill. npx skills add spicyapi-ai/spicy-skill installe l'Agent Skill, qui fait lire le schéma du modèle en direct par un assistant de code au lieu de deviner les champs. Il ne peut pas lancer de tâches tout seul, utilisez-le donc avec la CLI ou MCP.

Décidez si les pixels supplémentaires sont utiles

Vérifiez le résultat dans sa mise en page finale de carte ou d'impression, puis en pleine taille sur la plume, la gravure et les bords de l'étui : les pixels supplémentaires servent-ils à cet usage tout en gardant le produit fidèle ?

SymptômeÉtape suivante
La sortie est plus petite que la sourceComparez les pixels source au budget du palier ; ne montez d'un cran que si la destination exige un agrandissement.
Les lettres gravées paraissent nettes mais faussesRemplacez la source par une photo plus nette ou un visuel approuvé ; un palier plus grand ne peut pas vérifier les lettres manquantes.
Des contours lumineux apparaissent autour des bords sombresComparez avec l'original soumis. Si sa propre netteté a créé le contour, exportez une source plus propre avant de réessayer.
Le visage paraît lissé mais différentComparez les yeux, l'expression et la ligne de cheveux avec l'original ; rejetez ce candidat plutôt que d'approuver la seule netteté.
La page web télécharge une image énormeGardez le master approuvé et exportez un dérivé ordinaire plus petit pour l'emplacement affiché.
L'API refuse un champ supplémentaireSupprimez scale, face_restore, width et les réglages similaires ; cet endpoint n'en a aucun.
Un portrait fictif d'homme adulte accompagné de découpes papier de l'expression, de la ligne de cheveux et du col sur fond doux.

Illustration de détails de portrait à comparer, pas un détail facial récupéré.

Pour les portraits fictifs d'adultes, SpicyAPI n'exécute aucun contrôle de sécurité sur cet outil ; le consentement et les obligations juridiques restent donc les vôtres. Les entrées NSFW modérées et avancées s'agrandissent normalement ; exécutez un échantillon de votre propre matériel avant un lot.

Si le master est bon mais qu'une petite carte perd la gravure, ajustez ce dérivé ou réduisez le zoom ; un autre passage IA n'est pas le premier remède. Si vous avez besoin d'un cadrage plus large plutôt que de plus de pixels, voyez l'extension vers un nouveau rapport d'aspect ; pour les clips, voyez la mise à l'échelle vidéo.

Aussi en English · 日本語 · 한국어 · Deutsch · Español · Português (Brasil) · Русский · Italiano · Polski

Passez de la lecture à la pratique

Voir le workflow

Du concept ComfyUI à une image finale plus grande.

Créez un portrait de personnage ou une couverture de galerie avec Z-Image Turbo, transmettez l’image à Image Upscaler et sauvegardez l’image agrandie dans un seul graphe ComfyUI. Utilisez-le pour des portraits détaillés, des couvertures illustrées et des galeries aux visuels de grande taille.