Python + DALL·E / Gemini 批量生图实战:从单张到流水线的完整方案

最近在做一个需要批量生成商品图的项目,踩了不少坑,把方案整理出来分享一下。

为什么选 API 而不是 Web 端

手动用 ChatGPT 或 Gemini 网页版生图,一张张来效率太低。API 的优势:

  • 可编程:批量 prompt、自动重试、结果归档
  • 可控:指定尺寸、模型版本、输出格式
  • 可集成:嵌入现有工作流,比如电商上架、内容生产

基础代码:OpenAI SDK 调用生图

python 复制代码
import openai
import base64
from pathlib import Path

client = openai.OpenAI(
    api_key="your-api-key",
    base_url="https://api.openai.com/v1"  # 或替换为中转地址
)

def generate_image(prompt, model="dall-e-3", size="1024x1024"):
    """生成单张图片,返回 base64 数据"""
    resp = client.images.generate(
        model=model,
        prompt=prompt,
        size=size,
        response_format="b64_json"
    )
    return resp.data[0].b64_json

# 示例
img_data = generate_image("一杯冰美式咖啡,白色背景,商业摄影风格")
Path("output.png").write_bytes(base64.b64decode(img_data))

这是最基础的用法,下面加上批量和容错。

进阶:批量生成 + 自动重试

python 复制代码
import time
import json

def batch_generate(prompts, output_dir="./images", model="dall-e-3", max_retries=3):
    """批量生图,带重试和进度记录"""
    Path(output_dir).mkdir(exist_ok=True)
    results = []

    for i, prompt in enumerate(prompts):
        for attempt in range(max_retries):
            try:
                print(f"[{i+1}/{len(prompts)}] 生成中... (尝试 {attempt+1})")
                img_data = generate_image(prompt, model=model)
                
                filename = f"{output_dir}/img_{i+1:03d}.png"
                Path(filename).write_bytes(base64.b64decode(img_data))
                
                results.append({"prompt": prompt, "file": filename, "status": "ok"})
                print(f"  ✅ 保存到 {filename}")
                break
            except Exception as e:
                print(f"  ❌ 失败: {e}")
                if attempt < max_retries - 1:
                    time.sleep(2 ** attempt)  # 指数退避
                else:
                    results.append({"prompt": prompt, "file": None, "status": str(e)})

        time.sleep(1)  # rate limit 友好

    # 保存生成记录
    Path(f"{output_dir}/manifest.json").write_text(
        json.dumps(results, ensure_ascii=False, indent=2)
    )
    return results

用法:

python 复制代码
prompts = [
    "简约风格的蓝牙耳机,产品展示图,白色背景",
    "ins风格的手工蛋糕,暖色调,俯拍角度",
    "极简主义办公桌面,科技感,4K渲染风格",
]

batch_generate(prompts, model="dall-e-3")

模型选择建议

实测下来几个生图模型的特点:

模型 擅长场景 短板 速度
DALL·E 3 文字渲染、海报 写实人像偶尔崩 中等
Gemini 3 Pro 写实风格、多元素场景 艺术风格化稍弱
GPT-5 (图片) 综合能力强 中等

如果是电商场景,Gemini 3 Pro 性价比最高;需要带文字的海报图,DALL·E 3 更稳。

成本优化的一个思路

直接调官方 API 没问题,但如果量大(比如每天几百张),成本会比较可观。

我后来切到了一个 API 中转平台,接口完全兼容 OpenAI SDK,只需要改 base_url,代码零改动。好处是价格低不少,比如生图单价能到 ¥0.095/张,日常调用的 LLM 也比官方便宜。

感兴趣的可以搜 性价比APIxingjiabiapi.org),我用了几个月了还算稳定。不是广告,纯粹是量大之后成本敏感才去找的替代方案。

小结

  • API 生图的核心是 openai.images.generate,SDK 通用
  • 批量场景一定要加重试 + 指数退避 + 记录 manifest
  • 模型按场景选,别一把梭 DALL·E 3
  • 量大考虑中转平台降本

有问题评论区聊 👇

相关推荐
摄影图1 小时前
神经网络创意科技图片素材 满足多场景科技设计创作需求
人工智能·科技·神经网络·aigc·插画
92year3 小时前
用 Google ADK 编排多 Agent 工作流:Sequential、Loop、Parallel 实战拆解
aigc
love530love3 小时前
ComfyUI:为什么说它是 AIGC 应用层面的集大成者?
人工智能·pytorch·windows·aigc·devops·comfyui·extensions
Cobyte6 小时前
Agent Skills 系统的本质原理
前端·aigc·ai编程
码农阿强6 小时前
GPT-5.5 与 GPT-5.5-Pro 技术差异及接口接入实践
人工智能·gpt·ai·aigc·ai编程·ai写作·gpu算力
我没胡说八道6 小时前
论文AI改写工具深度实测测评|避坑对比、优劣短板、场景适配全解析
人工智能·经验分享·深度学习·aigc·论文·wps
武雄(小星Ai)6 小时前
GitHub Copilot Desktop 多 Agent 实测
人工智能·aigc·agent
冬奇Lab17 小时前
理发师会被 AI 取代吗?这可能是 AI 时代最有意思的一个社会学问题
人工智能·aigc
我是宝库17 小时前
英文专业论文,可以用维普AIGC检测查AI率吗?
人工智能·aigc·英文论文·论文查重·turnitin系统·turnitin·维普aigc检测
大拿爱科技17 小时前
低清视频修复怎么接入批处理?AI画质增强流程拆解
人工智能·自动化·aigc·音视频