Sanal deneme API'si: GPT Image 2 ile kıyafet değiştirme
Tek bir fotoğraf ve tek bir istem kıyafeti değiştiriyor. İstek kodu, 28 Ekim 2026'da çalıştırdığımız üç değişim ve düzenlemenin nerede kaydığı burada.
Bu sayfada
- Bir düzenleme sanal deneme için ne yapar, ne yapamaz
- Fotoğrafı ve kıyafet istemini gönderin
- Çalıştırdığımız üç kıyafet değişimi
- İkinci referans olarak ürün fotoğrafı
- Nerede kayıyor
- Ayrı bir sanal deneme API'si ne zaman daha uygun
- Kıyafet değişimi için istem şablonu
- Sık sorulan sorular
- GPT Image 2 API'sinde ayrı bir sanal deneme uç noktası var mı?
- Kıyafet fotoğrafı gönderebilir miyim?
- Yüz aynı kalıyor mu?
- Sonuç bağlantıları ne kadar geçerli?
- Hangi boyutu istemeliyim?
Evet, tek bir metin istemiyle. GPT-Image 2 düzenleme uç noktası tek bir fotoğrafta kıyafeti değiştirdi ve 28 Ekim 2026'daki üç denememizde duruş, yüz ve arka plan aynı kaldı. Ayrı bir kıyafet girdisi yok, ama ikinci bir ürün fotoğrafı bizim çalıştırmamızda elbisenin boyunu değiştirdi. Her sonucu gözle kontrol edin.
İstek, OmniaKey medya API'sinde bir görsel düzenleme: kaynak fotoğraf, bir istem ve isteğe bağlı referans görseller. Aşağıdaki işlevi 28 Ekim 2026'da farklı bir istemle (sarı yağmurluk) temel modelin 1024 piksellik JPEG'i üzerinde kontrol ettik ve 1024x1536 PNG döndü.
Bir düzenleme sanal deneme için ne yapar, ne yapamaz
Görsel düzenleme bir kaynak fotoğraf ve bir istemle başlar. İşlem edit, kaynak Base64 olarak satır içi gider ve istem yeni kıyafeti adlandırır; OmniaKey görsel API belgeleri (28 Ekim 2026'da kontrol edildi) images dizisinde birden fazla referans görsele de izin verir. Sonuç yeni bir kare, yani kıyafet değişirken kişi yerinde kalıyor: bizim çalıştırmalarımızda yüz, duruş, saçlar ve stüdyo arka planı korundu.
Sanal deneme için iki sınır önemli: ayrı bir kıyafet alanı yok, yani model kıyafeti sizin tarifinizden ya da ikinci bir fotoğraftan çiziyor, ve yeni kare adını vermediğiniz ayrıntılara dokunabiliyor. Sanal deneme özelliği sonucu incelemeye açmalı ve alışveriş yapan kişinin benzerliğe kendisi karar vermesine izin vermeli. Aynı işlem bir nesneyi sahneden kaldırmak için de çalışır; talimatla yapılan düzenlemeler için FLUX Kontext alternatifi kılavuzuna bakın.
Fotoğrafı ve kıyafet istemini gönderin
https://api.omniakey.com/v1/media/tasks adresine bearer anahtar, JSON gövde ve Idempotency-Key başlığıyla bir POST gönderin; OmniaKey görsel API belgeleri (28 Ekim 2026'da kontrol edildi) oluşturmanın HTTP 202 ve bir görev kimliği döndürdüğünü söylüyor. Durum queued veya processing olduğu sürece görev adresini yoklayın; succeeded dosyaların hazır olduğu anlamına gelir, başarısız görev error.code ve error.message taşır ve ücretlendirilmez.
Görev alanlarını şöyle doldurun:
| Alan | Değer |
|---|---|
model | gpt-image-2 |
type | image |
operation | edit |
input.prompt | kıyafet talimatı |
input.image | kaynak fotoğraf, data ve mime_type nesnesi olarak |
input.images | ek referans fotoğraflar |
parameters.size | WIDTHxHEIGHT |
parameters.quality | low, medium, high veya auto |
parameters.n | 1 |
İsteği 1 MiB'nin altında tutun, çünkü satır içi Base64 de bu sınıra sayılır. Örnek sayısı 1 olmalı ve API her zaman opak bir PNG döndürür, bu yüzden gerçek boyutları indirilen dosyadan okuyun.
İşlev şöyle:
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"] # imzalı bağlantı: yaklaşık bir saat geçerli, hemen indirin
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)
İmzalı dosya bağlantısı yaklaşık bir saat geçerli ve dosya 24 saat saklanıyor; aynı belgelere göre, bu yüzden görev başarılı olur olmaz indirin. 28 Ekim 2026'daki kontrolümüz sarı yağmurluk istemini temel modelin 1024 piksellik JPEG'i üzerinde kullandı ve 1024x1536 PNG döndü. Betik bir User-Agent başlığı gönderiyor: Python'un varsayılanı bizim çalıştırmamızda HTTP 403 ile reddedildi, başlığı ekleyince düzeldi.
Çalıştırdığımız üç kıyafet değişimi
Üç değişim de aynı sentetik fotoğrafla başladı: düz açık gri bir stüdyoda beyaz bisiklet yaka tişört ve koyu mavi kot giyen bir kadın; 1024x1536 boyutunda ve medium kalitede, 28 Ekim 2026'daki çalıştırmalarımızda üretildi.
Değişim 1 ince askılı, baldır ortasına inen kırmızı saten askılı elbise istedi. Elbise çıktı; duruş, yüz, saçlar ve arka plan aynı kaldı. Beyaz spor ayakkabılar istenmediği halde beyaz ince bantlı topukluya dönüştü.
Değişim 2 krem ipek bir atlet üzerine koyu yeşil yün blazer ve siyah düz paça pantolon istedi. Üç parça da göründü, beyaz spor ayakkabılar yerinde kaldı.
Değişim 3 sol göğüste küçük kırmızı işlemeli kalp bulunan, lacivert ve beyaz yatay çizgili uzun kollu bir üst istedi. Çizgiler ve kalp sol göğse geldi; koyu mavi kot ve beyaz spor ayakkabılar kaldı.

Buradaki tüm kişiler ve sahneler sentetik ve her istemi bir kez çalıştırdık, yani her görsel tek bir örnek.
Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1024x1536, quality medium.
İkinci referans olarak ürün fotoğrafı
Daha yakın bir sonuç için kıyafeti ikinci görsel olarak gönderin. Kişinin fotoğrafını birinci, düz serilmiş kırmızı saten askılı elbiseyi ikinci sıraya koyduk ve input.images ile şu istemi kullandık: "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."
Elbise yere kadar indi, düz serilmiş fotoğraftaki boya yakın. Aynı elbisenin yalnızca metinle tarif edilen sürümü baldır ortasında durdu. Tek örneğimizde ürün fotoğrafı, kelimelerin boş bıraktığı boyu taşıdı.

Nerede kayıyor
Kayma, istemin dışında bıraktığımız yerlerde göründü: askılı elbise değişimi ayakkabıları değiştirdi, oysa istem yalnızca elbiseyi adlandırıyordu. Bir sonucu alışveriş yapan kişiye göstermeden önce yüzü, elleri, eteği, ayakkabıları ve varsa deseni tam boyutta kontrol edin. Baskı logolu bir kıyafeti, ürün fotoğrafındaki tam kumaş desenini ve ikiden fazla görseli test etmedik.
Ayrı bir sanal deneme API'si ne zaman daha uygun
Ayrı bir sanal deneme API'si kişiyi ve kıyafeti iki ayrı girdi olarak alır. Google'ın Vertex AI sayfası "Generate Virtual Try-On Images" (son güncelleme 26 Ekim 2026; 28 Ekim 2026'da kontrol edildi) şöyle diyor: "You provide an image of a person and an image of a clothing product." Aynı sayfa personImage ve productImages alanlarını Base64 olarak, 1 ile 4 arası sampleCount değerini ve virtual-try-on-001 model kimliğini listeliyor. Sayfada ayrıca Vertex AI belgelerinin artık güncellenmediğine dair bir not var.
Kıyafet fotoğrafı tek doğru kaynak olduğunda ve istek başına birkaç örnek gerektiğinde bu tür bir uç noktayı seçin. Kıyafet değişimi ile diğer düzenlemeler için tek bir akış, çağrı başına örnekten daha önemliyse GPT-Image 2 düzenlemesini seçin.
OpenAI'nin fiyatlandırma sayfası (28 Ekim 2026'da kontrol edildi) gpt-image-2'nin token bazında ücretlendirildiğini söylüyor: sayfa token ücretlerini listeliyor, görsel başına bir tablo yok ve görsel üretim kılavuzundaki bir hesaplayıcıya yönlendiriyor. OmniaKey'in güncel ücreti fiyatlandırma sayfasında.
Kıyafet değişimi için istem şablonu
Çalıştırmalarımızda işe yarayan biçimi kullanın: önce kıyafeti adlandırın, sonra kişiyi ve sahneyi sabitleyin.
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.
- Kıyafet: renk, kumaş ve boy içeren tek cümle. "A red satin slip dress with thin straps that falls to mid-calf" net bir değişim verdi.
- Sabitler: duruş, yüz, saçlar, gövde, arka plan, ışık. Bunları istemde açıkça sıralayın.
- Bitiş: "Photorealistic, no text, no logos." İstemlerimiz bu sonla bitti.
- Ayakkabılar: kalmaları gerekiyorsa adlarını verin, örneğin "keep the white sneakers". Askılı elbise değişiminde ayakkabı istemde yoktu ve değişti.
Boy kelimelerden daha önemliyse ikinci bir görsel ekleyin: kişi birinci, kıyafet ikinci ve istemde bizim yaptığımız gibi "the first image" ile "the second image" ifadelerine başvurun. Genel istem sırası için GPT Image 2 istem kılavuzuna bakın.
Sık sorulan sorular
GPT Image 2 API'sinde ayrı bir sanal deneme uç noktası var mı?
Yok. OmniaKey'in model sayfası (28 Ekim 2026'da kontrol edildi) metinden görsele ve görsel düzenlemeyi listeliyor. Bizim çalıştırmalarımızda sanal deneme, metin istemi ve isteğe bağlı ikinci görselle yapılan bir düzenlemeydi.
Kıyafet fotoğrafı gönderebilir miyim?
Evet, input.images içinde ikinci referans görsel olarak. 28 Ekim 2026'daki çalıştırmamızda elbisenin boyu düz serilmiş fotoğrafa uydu.
Yüz aynı kalıyor mu?
Üç değişimde ve iki referanslı çalıştırmada gözle bakınca kaldı. Göstermeden önce her sonucu tam boyutta kontrol edin.
Sonuç bağlantıları ne kadar geçerli?
OmniaKey görsel API belgelerine göre (28 Ekim 2026'da kontrol edildi) yaklaşık bir saat ve dosya 24 saat saklanıyor. Görev başarılı olur olmaz indirin.
Hangi boyutu istemeliyim?
size değerini WIDTHxHEIGHT olarak verin, örneğin 1024x1536, sonra gerçek boyutları indirilen PNG'den okuyun. Çalıştırmalarımız 1024x1536 ve medium kalitede yapıldı.
Tek bir fotoğraf ve tek bir kıyafet istemiyle başlayın. GPT-Image 2 sayfası modeli anlatıyor; güncel ücretler ayrı.
Bu makaledeki modeller
İlgili makaleler
GPT Image 2 prompt rehberi: yapı, örnekler ve gerçek görseller
Sekiz prompt ve dokuz gerçek görsel: GPT Image 2 neyi harfiyen tuttu, neyi ekledi ve nasıl düzeltilir.
FLUX Kontext API alternatifi: GPT Image 2 ile görsel düzenleme
Maskesiz talimatla düzenleme: istek kodu, 28 Ekim 2026'da çalıştırdığımız üç adımlık zincir ve her adımın neleri koruduğu.
Nesne kaldırma API'si: GPT Image 2 ile fotoğraftan nesneyi tek cümleyle silin
Bu üç kaldırma için nesne başına tek komut yetti. İstek kodu, tam boy sonuçlar ve düzenlemenin henüz güvenilir olmadığı yerler aşağıda.
