제품 디자인 유지
제품의 형태, 비율, 색상, 로고, 패키지 문구가 원본에서 의도치 않게 바뀌지 않는지 확인합니다.
모델 가이드
gpt-image-2-vip
OpenAI Images API를 사용하며 정확한 크기, 이미지 편집, 세 가지 품질 단계를 지원합니다.
현재 YingTu에서 사용할 수 있는 설정입니다.
A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.
A clean e-commerce banner with a centered product, generous copy space, neutral background, and precise visual hierarchy.
A polished onboarding illustration with a simple interface motif, restrained colors, crisp shapes, and generous negative space.
현재 이미지 스튜디오에서 사용할 수 있는 설정입니다.
이미지 스튜디오와 같은 요청 형식을 사용한 예시입니다.
import base64
import mimetypes
import os
import sys
import requests
API_KEY = os.environ.get("LAOZHANG_API_KEY")
if not API_KEY:
raise RuntimeError("Set the LAOZHANG_API_KEY environment variable before running this example.")
REQUEST_TIMEOUT_SECONDS = 500
headers = {"Authorization": f"Bearer {API_KEY}"}
def extension_for_mime(mime_type):
return {
"image/jpeg": "jpg",
"image/png": "png",
"image/webp": "webp",
"image/gif": "gif",
}.get(mime_type, "bin")
def decode_base64_image(value, fallback_mime="image/png"):
mime_type = fallback_mime
encoded = value
if value.startswith("data:"):
header, encoded = value.split(",", 1)
mime_type = header[5:].split(";", 1)[0] or fallback_mime
return base64.b64decode(encoded, validate=True), mime_type
def parse_json_response(response):
try:
result = response.json()
except ValueError as error:
print("API returned a non-JSON response.", file=sys.stderr)
raise SystemExit(1) from error
if not isinstance(result, dict):
print("API returned an unexpected JSON shape.", file=sys.stderr)
raise SystemExit(1)
return result
def extract_image(result):
if not isinstance(result, dict):
return None
images = result.get("data") or []
first_image = images[0] if images and isinstance(images[0], dict) else {}
encoded = first_image.get("b64_json")
if isinstance(encoded, str) and encoded:
return decode_base64_image(encoded)
image_url = first_image.get("url")
if isinstance(image_url, str) and image_url:
image_response = requests.get(image_url, timeout=REQUEST_TIMEOUT_SECONDS)
image_response.raise_for_status()
mime_type = image_response.headers.get("Content-Type", "image/png").split(";", 1)[0]
return image_response.content, mime_type
return None
def save_result_image(result):
extracted = extract_image(result)
if not extracted:
keys = sorted(result.keys()) if isinstance(result, dict) else []
print(f"No image data in response. Top-level keys: {keys}", file=sys.stderr)
raise SystemExit(1)
image_bytes, mime_type = extracted
output_path = f"output.{extension_for_mime(mime_type)}"
with open(output_path, "wb") as output_file:
output_file.write(image_bytes)
print(f"Image saved: {output_path} ({mime_type})")
API_URL = "https://api2.laozhang.ai/v1/images/generations"
headers["Content-Type"] = "application/json"
payload = {
"model": "gpt-image-2-vip",
"prompt": "A minimal coffee poster with the exact headline “COFFEE MADE SIMPLE”, high contrast type, warm natural light, clean commercial layout.",
"size": "2048x2048",
"quality": "high"
}
try:
response = requests.post(
API_URL,
headers=headers,
json=payload,
timeout=REQUEST_TIMEOUT_SECONDS,
)
except requests.Timeout as error:
print(
"Request timed out after 500 seconds. The result status may be unknown; "
"check call and billing logs before retrying.",
file=sys.stderr,
)
raise SystemExit(1) from error
if response.status_code != 200:
print(f"API error {response.status_code}: {response.text}", file=sys.stderr)
raise SystemExit(1)
save_result_image(parse_json_response(response))
이 이미지에는 생성에 사용한 모델과 프롬프트가 기록되어 있지 않습니다. 시각 예시이며 모델 테스트 결과가 아닙니다.



테스트 기록
같은 절차로 다시 확인할 수 있는 공개 테스트 결과만 표시합니다. 공개되지 않은 내용은 표시하지 않습니다.
제품의 형태, 비율, 색상, 로고, 패키지 문구가 원본에서 의도치 않게 바뀌지 않는지 확인합니다.
피사체와 가장자리가 유지되는지, 요청한 배경으로 바뀌었는지, 불필요한 변화가 없는지 확인합니다.