Python调用中转站的image大模型进行生图教程

安装依赖

Windows:按win+R在cmd里面输入下面安装命令

20260913202345930-image

pip install openai httpx requests

文字生图(单张)

import base64
import time
from openai import OpenAI

client = OpenAI(
    base_url="https://api.3bw.cn/v1",
    api_key="填写凌启AI复制的key",
)

# 生成图片
response = client.images.generate(
    model="gpt-image-2",
    prompt="生成一个抖音直播的截图里面是一个美女在直播",
    size="1024x1024",      # 图片尺寸
    quality="high",         # 图片质量: "low" 或 "high"
)

# 获取图片数据
image_data = response.data[0]
filename = f"output_{int(time.time())}.png"

# 方式1: 如果返回 base64 编码
if image_data.b64_json:
    b64_str = image_data.b64_json
    # 去除可能的 data URI 前缀
    if "," in b64_str:
        b64_str = b64_str.split(",", 1)[1]
    
    with open(filename, "wb") as f:
        f.write(base64.b64decode(b64_str))
    print(f"图片已保存: {filename}")

# 方式2: 如果返回 URL
elif image_data.url:
    import requests
    r = requests.get(image_data.url, timeout=30)
    r.raise_for_status()
    
    with open(filename, "wb") as f:
        f.write(r.content)
    print(f"图片已保存: {filename}")

参数说明

参数 类型 说明 可选值
model string 模型名称 “gpt-image-2”
prompt string 图片描述文本 任意文本
size string 图片尺寸 见图像尺寸与比例
       

文字生图(并发)

使用异步方式并发生成多张图片,提高效率

import asyncio
import base64
import time
import httpx
from openai import AsyncOpenAI

# 使用异步客户端
client = AsyncOpenAI(
    base_url="https://api.3bw.cn/v1",
    api_key="凌启AI复制的key",
)

# 并发请求数量
COUNT = 5

# 配置参数
SIZE = "1024x1024"
PROMPT = "生成一个抖音直播的截图里面是一个美女在直播"
QUALITY = "high"


async def generate_one(index: int) -> str:
    """生成单张图片"""
    print(f"[{index}] 开始请求...")
    
    # 调用 API 生成图片
    resp = await client.images.generate(
        model="gpt-image-2",
        prompt=PROMPT,
        size=SIZE,
        quality=QUALITY,
    )
    
    image_data = resp.data[0]
    filename = f"gpt_output_{int(time.time())}_{index}.png"

    # 处理 base64 格式
    if image_data.b64_json:
        b64_str = image_data.b64_json
        if "," in b64_str:
            b64_str = b64_str.split(",", 1)[1]
        with open(filename, "wb") as f:
            f.write(base64.b64decode(b64_str))
    
    # 处理 URL 格式
    elif image_data.url:
        async with httpx.AsyncClient(timeout=60) as hc:
            r = await hc.get(image_data.url)
            r.raise_for_status()
            with open(filename, "wb") as f:
                f.write(r.content)
    else:
        raise ValueError(f"[{index}] API 未返回图片数据")

    print(f"[{index}] 已保存: {filename}")
    return filename


async def main():
    """主函数:并发生成多张图片"""
    start = time.time()
    
    # 并发执行所有请求
    results = await asyncio.gather(
        *[generate_one(i + 1) for i in range(COUNT)],
        return_exceptions=True,
    )
    
    elapsed = time.time() - start

    # 输出结果
    print(f"\n完成 {COUNT} 张,耗时 {elapsed:.1f}s")
    for i, r in enumerate(results, 1):
        if isinstance(r, Exception):
            print(f"  [{i}] 失败: {r}")
        else:
            print(f"  [{i}] {r}")


# 运行
asyncio.run(main())

参考图生图

import requests
import time
from openai import OpenAI

client = OpenAI(
    base_url="https://api.3bw.cn/v1",
    api_key="凌启AI复制的key",
)

# 图生图:以参考图为基础,生成新的图片
response = client.images.generate(
    model="gpt-image-2",
    prompt="生成狗狗趴在草地上的近景画面",
    size="1024x1024",
    response_format="url",  # 返回 URL 格式
    extra_body={
        # 参考图片 URL(支持网络图片)
        "image": "https://example.com/reference-image.png",
        "watermark": True,  # 是否添加水印
    }
)

# 获取生成的图片 URL
image_url = response.data[0].url
print("图片URL:", image_url)

# 下载图片到本地
filename = f"output_img2img_{int(time.time())}.png"
r = requests.get(image_url, timeout=30)
r.raise_for_status()

with open(filename, "wb") as f:
    f.write(r.content)
print(f"图片已保存到: {filename}")
查看更多心仪的内容 按Ctrl+D收藏我们
部分内容来自于网络 如有不妥联系站长删除
墨星博客欢迎前来投稿文章
© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容