海艺思创

首页/ AI绘图教程/ OpenAI Images API 一次生成多张图片怎么批量筛选

AI绘图教程

OpenAI Images API 一次生成多张图片怎么批量筛选

OpenAI Images API 一次生成多张图片怎么批量筛选

准备

先确定三个条件:每次要生成的候选数量、最终使用的画幅,以及筛选标准。资料显示,图像生成接口的 n 参数通常要求在 1 到 10 之间;DALL-E 3 只支持 n=1,因此需要批量候选时,应先确认所选模型支持多张生成。

  • 准备 OpenAI API 密钥,并在运行环境中配置为环境变量。
  • 固定一条提示词,不要在同一批请求中同时改变主体、画幅和风格。
  • 记录模型、n、size、quality 和提示词,方便复查候选结果。
  • 提前写好筛选标准,例如主体完整、构图适合裁切、背景干净、产品比例稳定。

如果你还要从已有图片生成相近方案,可以先参考OpenAI Images API 图片变体怎么生成,本文重点放在同一提示词生成多张候选图后的读取与筛选。

分步操作

  1. 设置生成数量和画幅。将 n 设置为 4 或 6 作为初始批次,size 根据用途选择支持的尺寸。n 的可用范围和模型限制以当前接口定义为准。

  2. 发起一次生成请求。下面的示例使用非流式调用,便于等所有结果返回后统一保存:

    from openai import OpenAI
    import base64
    from pathlib import Path
    
    client = OpenAI()
    output_dir = Path("image_candidates")
    output_dir.mkdir(exist_ok=True)
    
    prompt = "商品摄影,一只白色陶瓷杯放在浅灰色台面上,正面三分之二视角,主体完整,画面右侧留出排版空间,柔和侧光,干净背景,不要文字、标识或水印"
    
    result = client.images.generate(
        model="gpt-image-1",
        prompt=prompt,
        n=6,
        size="1024x1024",
        quality="medium",
    )
    
    for index, item in enumerate(result.data, start=1):
        if not item.b64_json:
            continue
        image_bytes = base64.b64decode(item.b64_json)
        (output_dir / f"candidate-{index:02d}.png").write_bytes(image_bytes)
    
    print(f"已保存 {len(result.data)} 个候选结果")
  3. 读取返回结果。把返回对象中的 data 视为候选结果列表,按返回顺序编号保存。GPT image 模型返回 Base64 图片数据,因此示例使用 base64.b64decode 解码;DALL-E 2 或 DALL-E 3 可使用 url 或 b64_json,但 URL 只在生成后的 60 分钟内有效,应及时下载。

  4. 建立候选记录。不要只保存图片文件,建议同时保存一份 JSON 记录:

    {
      "prompt": "商品摄影,一只白色陶瓷杯放在浅灰色台面上",
      "model": "gpt-image-1",
      "n": 6,
      "size": "1024x1024",
      "candidates": [
        {"id": "candidate-01", "status": "待筛选"},
        {"id": "candidate-02", "status": "待筛选"}
      ]
    }
  5. 按同一套标准初筛。先淘汰主体缺失、严重变形、构图无法使用的结果,再比较剩余图片的主体位置、留白、光线和用途适配度。每张图只记录“保留”“备选”或“淘汰”以及一个简短原因。

  6. 复核最终候选。将保留图放到真实页面或商品版式中预览,检查裁切后主体是否仍完整,避免只看原图缩略图就做决定。

可复制模板或示例

可以把提示词拆成固定段和变量段。批量探索时只改变变量段,能减少筛选时的干扰:

固定主体:{产品名称、颜色、材质、外形特征}
构图要求:{正面或侧面视角、主体位置、留白方向}
场景要求:{背景、台面、光线和氛围}
用途要求:{商品主图、横向封面或竖向海报}
限制条件:主体完整,比例自然,不要文字、标识、水印和多余物体

示例:
固定主体:白色陶瓷杯,圆柱形杯身,细黑色杯口,哑光材质
构图要求:三分之二正面视角,主体位于画面左侧,右侧保留大面积留白
场景要求:浅灰色台面,柔和侧光,低对比度背景
用途要求:横向商品封面
限制条件:主体完整,比例自然,不要文字、标识、水印和多余物体

筛选表可以使用以下字段:候选编号、主体完整度、构图适配度、背景干净度、细节稳定性、实际用途、处理结论、淘汰原因。评分不必追求复杂,关键是所有候选都使用相同标准。

翻车怎么改

常见故障:请求设置了多张图片,但程序只保存了一张,或者保存出的文件无法打开。

原因:代码只读取了返回列表中的第一个元素,或直接把 Base64 字符串当作二进制文件写入。GPT image 模型的结果需要逐项读取并进行 Base64 解码。

修正动作:遍历 result.data,为每个 item 单独编号;读取 b64_json 后先调用 base64.b64decode,再写入 PNG 文件。如果使用 DALL-E 返回 URL,则应在有效期内下载并保存,不要只记录临时地址。

另一个常见问题是候选图看起来差异很小。此时不要马上增加风格词,先检查是否把主体、视角和画幅写得过于固定。若目标是探索构图,可以只放宽构图段;若目标是保持产品一致,则继续固定主体描述,只比较留白、角度或背景。

完成前检查

  • 确认 n 在所选模型允许的范围内,并核对 DALL-E 3 的单张限制。
  • 确认每个返回结果都有独立文件名,没有覆盖前一张图片。
  • 确认 GPT image 的 Base64 数据已正确解码,保存文件可以正常打开。
  • 确认提示词、模型、数量、尺寸和质量参数已保存。
  • 确认每张候选图都按同一套标准完成保留、备选或淘汰标记。
  • 确认最终图片放入实际版式后,主体、留白和裁切仍满足发布要求。

下一步

把这篇的方法练一遍

提示词和步骤可以带到创作里直接试做一版。

去创作 看同栏目更多