图像生成详细教程¶
支持多种图像生成模型,包括 Seedream、Flux、DALL-E 等
实际生成效果展示¶
下面是使用本教程代码实际生成的图片示例:
| 示例 | Prompt 描述 | 生成效果 |
|---|---|---|
| 橘猫 | "一只可爱的橘猫坐在阳光下的草地上,卡通风格,皮克斯动画,柔和光影" | ![]() |
所有图片都来自 API 实际调用,使用 doubao-seedream-4-0-250828 模型生成。
目录¶
前置准备¶
安装依赖¶
配置 API Key¶
参考 文本对话教程 的前置准备章节,配置好你的 API Key。
你的第一张 AI 图片¶
复制运行,快速生成你的第一张 AI 图片:
from openai import OpenAI
client = OpenAI(
# api_key="你的API_KEY", # 配置了环境变量就不用写这行
base_url="https://apinexus.net/v1"
)
response = client.images.generate(
model="doubao-seedream-4-0-250828",
prompt="一只可爱的橘猫坐在窗台上,阳光洒在身上,卡通风格,皮克斯动画,柔和光影,高画质,8K分辨率",
size="1024x1024",
n=1
)
print(f"生成成功!")
print(f"图片链接: {response.data[0].url}")
DALL-E 格式详解¶
这是最标准、最常用的图像生成格式,支持所有兼容 OpenAI DALL-E 接口的模型。
完整参数说明¶
response = client.images.generate(
model="doubao-seedream-4-0-250828", # 模型 ID
prompt="一只可爱的小狗", # 提示词(最重要)
size="1024x1024", # 图片尺寸
n=1, # 生成数量
quality="standard", # 质量: standard / hd
style="vivid", # 风格: vivid / natural
response_format="url", # 返回格式: url / b64_json
user="user-123" # 用户标识 (可选)
)
参数详解:
| 参数 | 可选值 | 说明 |
|---|---|---|
prompt | 任何文字 | 最重要! 描述你想要的画面 |
size | 1024x10241792x10241024x1792 | 正方形 / 横屏 / 竖屏 |
n | 1 ~ 10 | 一次生成几张图片 |
quality | standard / hd | hd 质量更高,更贵更慢 |
style | vivid / natural | vivid 鲜艳,natural 自然 |
response_format | url / b64_json | 返回 URL 或 base64 编码 |
支持的尺寸对比¶
| 尺寸 | 比例 | 适用场景 |
|---|---|---|
1024x1024 | 1:1 正方形 | 头像、社交媒体配图、LOGO |
1792x1024 | 16:9 横屏 | 电脑壁纸、PPT 配图、视频封面 |
1024x1792 | 9:16 竖屏 | 手机壁纸、小红书、抖音配图 |
保存图片到本地¶
生成图片 URL 后,下载保存到电脑:
import requests
from pathlib import Path
def download_image(url, save_path="generated_image.png"):
"""下载图片到本地"""
response = requests.get(url, timeout=30)
response.raise_for_status() # 下载失败会抛出异常
with open(save_path, "wb") as f:
f.write(response.content)
print(f"图片已保存到: {Path(save_path).absolute()}")
return save_path
# 使用示例
image_url = response.data[0].url # 从生成结果中拿到 URL
download_image(image_url, "可爱的橘猫.png")
模型选择指南¶
可用的图像生成模型:
| 模型 | 格式 | 特点 | 推荐场景 |
|---|---|---|---|
| doubao-seedream-4-0-250828 | DALL-E | 中文理解好,性价比高 | 中文提示词首选 |
| doubao-seedream-4.5-251128 | DALL-E | 增强版,中文理解更好 | 复杂中文场景 |
| doubao-seedream-3-0-t2i-250415 | DALL-E | 基础版 | 简单图像生成 |
| flux-1.1-pro | Chat | 高质量,英文 prompt 效果佳 | 写实风格 |
| flux-2-pro | Chat | 最高质量 | 专业级图像 |
| flux.1-kontext-pro | Chat | 上下文理解强 | 复杂场景 |
| dall-e-3 | DALL-E | OpenAI 官方 | 通用场景 |
选择建议: 1. 中文提示词 -> 优先使用 Seedream 系列 2. 英文提示词 -> Flux 系列或 DALL-E 3 3. 需要快速出图 -> flux-1.1-pro 4. 追求最高质量 -> flux-2-pro
Prompt 编写技巧¶
写好 Prompt 是成功生成图像的关键。
基本结构¶
示例:
好的 Prompt vs 差的 Prompt¶
| 不要这么写 | 应该这么写 |
|---|---|
| "一只猫" | "一只可爱的布偶猫,蓝色眼睛,蓬松毛发,坐在落地窗前,午后阳光,柔和光斑,浅景深,8K 高清,照片级画质" |
| "风景" | "壮丽的阿尔卑斯山日出,雪山倒映在宁静的湖面上,金色阳光,薄雾缭绕,超广角镜头,国家地理杂志风格" |
| "女孩" | "年轻的东方女孩,黑色长直发,清澈的眼神,微笑,自然光,人像摄影,佳能 R5, f/1.8,柔和背景虚化" |
常用风格关键词¶
艺术风格:
画质描述:
光线效果:
视角/构图:
中文 vs 英文¶
| 模型系列 | 推荐语言 |
|---|---|
| Seedream / 豆包系列 | 中文 |
| Flux 系列 | 英文效果更好 |
| DALL-E 3 | 都可以 |
常见问题 FAQ¶
Q: 为什么生成的图片和我想的不一样?¶
这是正常的。可以试试: 1. 把 Prompt 写得更详细,参考上面的编写技巧 2. 换个模型试试,不同模型擅长的风格不同 3. 多生成几次,AI 生成有随机性
Q: 生成的图片 URL 有效期多久?¶
通常图片 URL 有一定有效期。重要图片请立即下载到本地保存!
Q: 为什么图片里有奇怪的文字?¶
大多数图像模型的文字生成能力有限。如果需要图片里有清晰的文字,可以尝试不同的模型或后期处理。
Q: 可以用自己的图片作为参考吗?¶
部分模型支持图生图(Image-to-Image)功能。请参考具体模型的文档说明。
Q: AI 生成的图片有版权问题吗?¶
一般来说,用户拥有生成图片的使用权,但不同供应商的条款可能不同。商业使用前请仔细阅读服务商的条款。
完整示例代码¶
这是一个完整的、可以直接运行的图像生成程序:
"""
AI 图像生成演示程序
用法: python generate_image.py
"""
from openai import OpenAI
from pathlib import Path
import requests
from datetime import datetime
client = OpenAI(base_url="https://apinexus.net/v1")
# 创建输出目录
output_dir = Path("generated_images")
output_dir.mkdir(exist_ok=True)
def download_image(url, save_path):
"""下载图片到本地"""
try:
response = requests.get(url, timeout=30)
response.raise_for_status()
with open(save_path, "wb") as f:
f.write(response.content)
print(f"已保存: {save_path}")
return True
except Exception as e:
print(f"下载失败: {e}")
return False
def generate_with_dalle_format(prompt, model="doubao-seedream-4-0-250828"):
"""用 DALL-E 格式生成图片"""
print(f"正在生成图片... (模型: {model})")
print(f"Prompt: {prompt[:50]}...")
response = client.images.generate(
model=model,
prompt=prompt,
size="1024x1024",
n=1
)
url = response.data[0].url
print(f"生成成功!")
print(f"图片链接: {url}")
# 自动下载
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
save_path = output_dir / f"image_{timestamp}.png"
download_image(url, save_path)
return url
def main():
print("=" * 60)
print("API Nexus 图像生成演示")
print("=" * 60)
# 示例 Prompt 库
sample_prompts = [
"一只可爱的布偶猫,蓝色眼睛,坐在窗台上,午后阳光,柔和光斑,浅景深,8K 高清,照片级画质",
"赛博朋克风格的未来城市夜景,霓虹灯,雨天,玻璃幕墙反射,电影质感,8K",
"中国风水墨画,远山如黛,云雾缭绕,一叶扁舟,意境悠远,留白",
"美味的巧克力蛋糕,精致的摆盘,特写镜头,美食摄影,柔和光线,让人垂涎欲滴",
]
print("\n选择示例 Prompt:")
for i, p in enumerate(sample_prompts, 1):
print(f" {i}. {p[:40]}...")
print("\n或者直接输入你想画的内容!")
user_input = input("\n请输入 (数字 或 自定义描述): ").strip()
# 确定 Prompt
if user_input.isdigit() and 1 <= int(user_input) <= len(sample_prompts):
prompt = sample_prompts[int(user_input) - 1]
else:
prompt = user_input
# 生成图片
generate_with_dalle_format(prompt)
print("\n" + "=" * 60)
print("完成!去 generated_images 文件夹查看你的作品吧!")
if __name__ == "__main__":
main()
下一步¶
最后更新: 2026-06-16
