暂无公开结果
商品外观一致性
商品的形状、比例、颜色、Logo 和包装文字是否保持一致。
模型指南
gemini-3.1-flash-image
适合日常图片生成和参考图编辑,可选择多种输出尺寸与画面比例。
以下是 YingTu 当前提供的模型设置。
浅色石材桌面上的哑光陶瓷咖啡杯商品图,柔和窗光,自然阴影,极简陈列,保留真实材质细节。
日出时分的高山湖泊旅行编辑摄影,层次分明的空气透视,自然色彩,精细细节。
保留主体与构图,把背景替换为安静的现代摄影棚,使用柔和的定向日光。
以下是图片工作室当前可用的设置。
示例使用与图片工作室相同的请求格式。
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.")
API_URL = "https://api2.laozhang.ai/v1beta/models/gemini-3.1-flash-image:generateContent"
REQUEST_TIMEOUT_SECONDS = 500
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"contents": [{
"parts": [
{"text": "浅色石材桌面上的哑光陶瓷咖啡杯商品图,柔和窗光,自然阴影,极简陈列,保留真实材质细节。"}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"imageSize": "2K"
}
}
}
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)
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)
image_part = None
for candidate in result.get("candidates", []):
for part in candidate.get("content", {}).get("parts", []):
inline_data = part.get("inlineData") or part.get("inline_data")
if inline_data and inline_data.get("data"):
image_part = inline_data
break
if image_part:
break
if not image_part:
response_id = result.get("responseId", "not provided")
print(f"No image data in response. responseId={response_id}", file=sys.stderr)
raise SystemExit(1)
mime_type = image_part.get("mimeType") or image_part.get("mime_type") or "image/png"
encoded_image = image_part["data"]
if encoded_image.startswith("data:"):
header, encoded_image = encoded_image.split(",", 1)
mime_type = header[5:].split(";", 1)[0] or mime_type
extension_by_mime = {
"image/jpeg": "jpg",
"image/png": "png",
"image/webp": "webp",
"image/gif": "gif",
}
extension = extension_by_mime.get(mime_type, "bin")
output_path = f"output.{extension}"
with open(output_path, "wb") as output_file:
output_file.write(base64.b64decode(encoded_image, validate=True))
print(f"Image saved: {output_path} ({mime_type})")
这些图库图片没有记录生成时使用的模型和提示词,仅作视觉示例,不代表该模型的实测效果。



测试记录
这里只展示可公开查看的 YingTu 测试结果。尚无结果时,我们会明确说明,不展示草稿数据。
商品的形状、比例、颜色、Logo 和包装文字是否保持一致。
替换背景时,主体和边缘是否完整,以及是否出现未要求的改动。