Użyj spicyapi/image-upscaler-v1/upscale, aby powiększyć jeden gotowy obraz. Wybierz 2k, 4k lub 8k według liczby pikseli, której wymaga ostateczny kadr: te poziomy to budżety pikseli wynoszące mniej więcej 4, 17 i 67 megapikseli, a nie stałe rozmiary dłuższego boku. Wszystkie trzy kosztują 0,012 $ za obraz wyjściowy (1000 obrazów to 12 $), w formacie JPEG, PNG lub WebP. Najpierw sprawdź to w Playground, potem uruchom krótki przykład w Pythonie albo przekaż zadanie Agentowi.
Wybierz poziom według ostatecznego kadru
Image Upscaler zachowuje proporcje źródła. Portret 1024×1536 zwraca:
| Żądanie | Budżet pikseli | Zwracany rozmiar | Cena |
|---|---|---|---|
2k | około 4 MP | 1672×2508 | 0,012 $/obraz |
4k (domyślnie) | około 17 MP | 3344×5017 | 0,012 $/obraz |
8k | około 67 MP | 6689×10033 | 0,012 $/obraz |
Inne proporcje dają inne wymiary. Jeśli myślisz w kategoriach „2×” lub „4×”, powiększenie liniowe to pierwiastek kwadratowy z budżetu podzielony przez megapiksele źródła:
| Źródło | 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 zdjęcie z telefonu) | 0,6× (zmniejsza) | 1,2× | 2,4× |
Poziom poniżej liczby pikseli źródła zmniejsza: wejście 3344×5017 wysłane na 2k zwraca 1672×2509. Jeśli źródło już spełnia wymaganie celu, wyeksportuj je normalnie; ten endpoint nie ma trybu wyostrzenia w rozmiarze oryginalnym.
Dla karty internetowej wyświetlanej z szerokością 600 pikseli przy gęstości 2× potrzebujesz 1200 pikseli w ostatecznym kadrze. Jeśli ten kadr zachowuje połowę szerokości źródła, master potrzebuje 2400 pikseli szerokości. Portret 1672 pikseli na 2k nie wystarcza; 4k go obejmuje.
Do druku pomnóż cale przez gęstość, o którą poprosi drukarka. Obraz 10×15 cali przy 300 pikselach na cal wymaga 3000×4500 pikseli, a portret 4k obejmuje ten rozmiar bez kadrowania. Zmiana metadanych gęstości nie dodaje pikseli, a ciaśniejszy kadr wymaga nowego obliczenia.
Wybieraj 8k tylko wtedy, gdy kadr tego wymaga. Cena jest ta sama, ale 67 megapikseli to około 268 MB surowych danych pikseli w czterech kanałach, co ma znaczenie dla pamięci podczas obróbki, a pobrany JPEG osiąga około 8 MB na tym poziomie.
Przygotuj czyste źródło
Najpierw zakończ usuwanie obiektów, kadrowanie i inne poprawki, a zacznij od najlepszego oryginału, a nie od miniaturki ze strony. Wejściem jest jeden JPEG, PNG lub WebP o maksymalnym rozmiarze 10 MB, więc duży master do druku może wymagać wyeksportowania przed wysłaniem. Do fikcyjnego katalogu artykułów papierniczych użyj zatwierdzonego zdjęcia pióra wiecznego i jego pudełka, a osobną referencję zachowaj dla dokładnego grawerowanego nazwiska: powiększenie może zamienić niejednoznaczne ślady w pewne, ale błędne litery.
Wybierz output_format zależnie od tego, co będzie dalej. jpeg (domyślnie) jest najmniejszy; PNG jest bezstratny, ale przy 8k kilkakrotnie większy; WebP plasuje się pomiędzy. PNG nie zamienia odtworzonego szczegółu w pewnik. Nie ma promptu, dokładnej szerokości/wysokości, siły przywracania twarzy ani seeda.

Ilustracja obszarów inspekcji, a nie wynik skalowania w górę.
Najpierw sprawdź to w Playground
- Otwórz stronę Image Upscaler i zostań w karcie Playground w widoku Form. Zaloguj się kontem z saldem, aby uruchomić.
- Upuść obraz w Input image (JPG, PNG lub WEBP, do 10 MB) albo wklej link przez Asset URL.
- Ustaw Resolution na 2K, 4K lub 8K, a Output format na JPEG, PNG lub WebP.
- Uruchom, a potem sprawdź wynik w jego ostatecznym rozmiarze karty lub wydruku.
Spróbuj tutaj najlepszego źródła, zanim napiszesz kod. Treść żądania w Playground to ten sam JSON, który przyjmuje API, więc konfiguracja działająca tutaj przenosi się wprost do kodu.
Potem wywołaj to z kodu
Zainstaluj Python SDK (pip install spicyapi), ustaw SPICY_API_KEY w swoim środowisku i uruchom:
Zainstaluj Pillow (python -m pip install Pillow) do walidacji pobierania w tym przykładzie. Oryginalny plik wyjściowy zostaje zastąpiony dopiero po pomyślnym zdekodowaniu nowego JPEG.
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)Jedno uruchomienie trwa około 45 sekund. Poziom i format zmienisz, modyfikując resolution i output_format. Wgrywanie, oczekiwanie, ponowienia i błędy opisuje przewodnik po zadaniach oraz referencja Python SDK. Linki do wyniku działają około 20 minut, a wygenerowane pliki są usuwane najpóźniej po 14 dniach, więc skopiuj wynik do własnej pamięci.
Albo niech wykona to Agent
Gdy asystent ma powiększyć twoje obrazy, wszystkie trzy oficjalne narzędzia pokazują cenę i pytają o zgodę przed płatnym wywołaniem.
- CLI.
spicyapiwykonuje jedno zadanie z terminala (npx @spicyapi/clidziała bez instalacji). Umieść{"image_url": "spicy://...", "resolution": "4k"}winput.json, używając URI, które wypisuje wgrywanie:
``bash spicyapi files upload ./fountain-pen-master.png spicyapi tasks create --model spicyapi/image-upscaler-v1/upscale --input-file input.json --wait ``
- Serwer MCP. Dodaj serwer MCP do swojego asystenta, a potem zapytaj: „Upscale ./fountain-pen-master.png to 4K with Image Upscaler.” Wywołuje
spicyapi_upload_file, potemspicyapi_task_create, który zatrzymuje się na potwierdzenie ceny, a następniespicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstaluje Agent Skill, dzięki któremu asystent programistyczny czyta bieżący schemat modelu zamiast zgadywać pola. Sam nie uruchomi zadań, więc używaj go razem z CLI lub MCP.
Oceń, czy dodatkowe piksele się przydadzą
Sprawdź wynik w ostatecznym układzie karty lub wydruku, a potem w pełnym rozmiarze na stalówce, grawerunku i krawędziach pudełka: czy dodatkowe piksele służą temu zastosowaniu, zachowując wierność produktu?
| Objaw | Następny krok |
|---|---|
| Wynik jest mniejszy niż źródło | Porównaj piksele źródła z budżetem poziomu; przejdź o poziom wyżej tylko wtedy, gdy cel wymaga powiększenia. |
| Grawerowane litery wyglądają ostre, ale są błędne | Zastąp źródło ostrzejszym zdjęciem lub zatwierdzoną grafiką; wyższy poziom nie zweryfikuje brakujących liter. |
| Wokół ciemnych krawędzi pojawiają się jasne obwódki | Porównaj z wysłanym oryginałem. Jeśli obwódkę stworzyło jego samo wyostrzenie, wyeksportuj czystsze źródło przed powtórzeniem. |
| Twarz wygląda wygładzona, ale inaczej | Porównaj oczy, wyraz i linię włosów z oryginałem; odrzuć tego kandydata, zamiast akceptować samą ostrość. |
| Strona pobiera ogromny obraz | Zachowaj zatwierdzony master i wyeksportuj mniejszą zwykłą pochodną na wyświetlane miejsce. |
| API odrzuca dodatkowe pole | Usuń scale, face_restore, width i podobne ustawienia; ten endpoint nie ma żadnych. |

Ilustracja detali portretu do porównania, a nie odtworzony detal twarzy.
Dla fikcyjnych portretów dorosłych SpicyAPI nie uruchamia przy tym narzędziu kontroli bezpieczeństwa, więc zgoda i obowiązki prawne pozostają po Twojej stronie. Umiarkowane i zaawansowane dane NSFW powiększają się normalnie; przed serią uruchom jedną próbkę własnego materiału.
Jeśli master jest dobry, ale mała karta gubi grawerunek, popraw tę pochodną albo ogranicz zoom; kolejne przejście przez AI nie jest pierwszym rozwiązaniem. Jeśli potrzebujesz szerszego kadru zamiast większej liczby pikseli, zobacz rozszerzanie kadru do nowych proporcji; dla klipów zobacz skalowanie wideo w górę.






