上周接了个小活,甲方要做批量生成商品主图的工具。需求很明确:传一段文字描述,出一张高质量商品图。我第一反应是 DALL·E 3,但试了几张发现文字渲染还是拉胯,英文勉强能看,中文直接乱码。然后想起 OpenAI 前阵子放出来的 GPT image-2 —— 就是 ChatGPT 里那个画图贼强的模型,现在 API 终于开放了。折腾了两天,踩了不少坑,总算跑通了整个流程,写篇文章记录一下。
GPT image-2 是 OpenAI 2026 年开放 API 的最新图像生成模型,通过 gpt-image-1 端点调用,支持文字渲染、风格控制和透明背景输出,生成质量比 DALL·E 3 有明显提升。下面是完整的接入方案和我踩过的坑。
Python 3.9+,装最新版 openai SDK:
pip install openai>=1.75.0
注意版本,老版本 SDK 不支持 gpt-image-1 的部分参数,我一开始用的 1.68 就报了参数错误,升级后才好。
最简单的调用方式,和 DALL·E 3 的接口几乎一样,换个 model 参数就行:
from openai import OpenAI client = OpenAI( api_key="your-key", base_url="https://api.ofox.ai/v1" # 聚合接口,一个 Key 调所有模型 ) result = client.images.generate( model="gpt-image-1", prompt="一只橘猫坐在赛博朋克风格的霓虹灯街道上,旁边有一个写着「深夜食堂」的招牌,招牌文字清晰可读", size="1024x1024", quality="high", output_format="png", n=1 ) # 返回的是 base64 编码的图片数据 import base64 image_data = base64.b64decode(result.data[0].b64_json) with open("cat_cyberpunk.png", "wb") as f: f.write(image_data) print("图片已保存")
跑出来的效果说实话惊到我了,「深夜食堂」四个字居然真的是对的,笔画没乱。DALL·E 3 画中文基本就是鬼画符。
几个关键参数说明:
quality:low、medium、high,价格差不少,测试阶段用 low 就行output_format:png支持透明背景,jpeg体积小,webp也支持size:支持1024x1024、1024x1536(竖图)、1536x1024(横图)、auto
这个是我觉得 GPT image-2 最实用的能力 —— 传一张图进去,告诉它改哪里:
from openai import OpenAI from pathlib import Path import base64 client = OpenAI( api_key="your-key", base_url="https://api.ofox.ai/v1" ) # 读取原图 image_path = Path("product_photo.png") image_data = base64.standard_b64encode(image_path.read_bytes()).decode("utf-8") result = client.images.edit( model="gpt-image-1", image=[ { "type": "input_image", "image_url": f"data:image/png;base64,{image_data}", } ], prompt="把背景换成纯白色,保持商品主体不变,添加柔和的阴影效果", size="1024x1024", quality="high", ) edited_image = base64.b64decode(result.data[0].b64_json) with open("product_white_bg.png", "wb") as f: f.write(edited_image)
做电商抠图换背景简直好用,之前要用 remove.bg + PS 手动调,现在一个 API 调用搞定。
做商品主图最常见的需求 —— 生成透明背景的图,方便后期合成:
from openai import OpenAI import base64 import time client = OpenAI( api_key="your-key", base_url="https://api.ofox.ai/v1" ) products = [ "一瓶极简风格的护肤精华液,磨砂玻璃瓶身,金色瓶盖", "一双白色运动鞋,侧面视角,微微悬浮", "一个黑色真皮钱包,半打开状态,45度角俯拍", ] for i, desc in enumerate(products): result = client.images.generate( model="gpt-image-1", prompt=f"{desc},透明背景,产品摄影风格,柔和的工作室灯光", size="1024x1024", quality="high", output_format="png", # 必须 png 才支持透明通道 background="transparent", # 关键参数 ) img = base64.b64decode(result.data[0].b64_json) with open(f"product_{i+1}.png", "wb") as f: f.write(img) print(f"第 {i+1} 张生成完成") time.sleep(1) # 别太快,容易触发限流
background="transparent" 这个参数是 GPT image-2 新加的,DALL·E 3 没有。生成出来直接就是透明底,不用再后处理。
说几个我实际踩到的坑。
坑 1:返回格式变了
DALL·E 3 默认返回 url(一个临时链接),GPT image-2 默认返回 b64_json。我一开始还按老代码去取 result.data[0].url,结果拿到 None,debug 了半小时才发现。如果你确实想要 URL,需要显式传 response_format="url",但官方文档说 URL 会在一小时后过期,建议还是用 base64 自己存。
坑 2:quality 参数对价格影响很大
GPT image-2 的计费是按 token 算的,不是按张。high 质量的 1024×1024 大概消耗 4000-8000 token,low 只要 1000-2000。我第一天测试没注意,全用 high,一天下来烧了好几十块。测试阶段真的用 low 就够了。
坑 3:中文 prompt 的玄学
虽然说支持中文文字渲染,但 prompt 里中文描述太长的时候,偶尔会出现文字错误。一个 workaround 是把需要渲染的文字用引号括起来,并且单独强调一下:
# 不太稳定的写法 prompt = "画一个咖啡店招牌,上面写着今日特惠拿铁半价" # 更稳定的写法 prompt = '画一个咖啡店招牌,上面写着「今日特惠 拿铁半价」,文字必须清晰准确,每个汉字都要正确'
坑 4:并发限制
GPT image-2 的 rate limit 比文本模型严格不少。我用 asyncio 开了 10 个并发,直接被 429 了。后来改成 3 个并发 + 每次间隔 2 秒,才稳定下来。批量生成的话建议做个简单的队列。
整个调用流程其实很简单,画个图看一下:
ofox.ai 是一个 AI 模型聚合平台,兼容 OpenAI API 协议,一个 Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3 等 50+ 模型,也包括 gpt-image-1。改个 base_url 就能用,不用折腾鉴权的事。
GPT image-2 的 API 比 DALL·E 3 强了一个档次,文字渲染和透明背景这两个能力做电商图、营销素材、UI 素材都很实用。价格按 token 计费,小批量用其实不贵,大批量注意控制 quality 参数。
那个商品主图工具已经上线了,甲方还挺满意的。唯一的槽点是生成速度偏慢,high 质量的图大概要 10-15 秒,比 DALL·E 3 慢一些,但质量确实好,这个 trade-off 我能接受。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/280193.html