DALL-E 3 图像生成教程
OpenAI最新图像生成模型,创造惊艳的AI艺术作品
超高质量
HD高清输出
风格控制
Natural/Vivid
理解力强
精准理解提示
多种尺寸
3种画幅比例
一、基础图像生成
快速开始
import openai
client = openai.OpenAI(
api_key="your-api-key",
base_url="https://api.n1n.ai/v1"
)
# 基础图像生成
response = client.images.generate(
model="dall-e-3",
prompt="一只可爱的卡通猫咪坐在月球上,周围有星星,赛博朋克风格",
size="1024x1024", # 1024x1024, 1024x1792, 1792x1024
quality="hd", # standard 或 hd
n=1 # DALL-E 3 只支持 n=1
)
image_url = response.data[0].url
print(f"生成的图像URL: {image_url}")
# 高级参数控制
response = client.images.generate(
model="dall-e-3",
prompt="专业商业摄影:一杯精致的拿铁咖啡,木质桌面,早晨柔和光线,景深效果",
size="1792x1024", # 横向高分辨率
quality="hd",
style="natural", # natural 或 vivid
response_format="b64_json" # 返回base64编码
)
# 保存base64图像
import base64
from PIL import Image
from io import BytesIO
if response_format == "b64_json":
image_data = base64.b64decode(response.data[0].b64_json)
image = Image.open(BytesIO(image_data))
image.save("generated_image.png")二、提示词工程
高质量提示词构建
# DALL-E 3 提示词工程
class DallE3PromptBuilder:
"""构建高质量DALL-E 3提示词"""
def __init__(self):
self.prompt_parts = []
def add_subject(self, subject: str):
"""添加主题"""
self.prompt_parts.append(f"Subject: {subject}")
return self
def add_style(self, style: str):
"""添加艺术风格"""
styles_map = {
"realistic": "photorealistic, high detail, professional photography",
"anime": "anime style, manga aesthetic, cel shading",
"oil_painting": "oil painting, impressionist, thick brushstrokes",
"watercolor": "watercolor painting, soft edges, flowing colors",
"3d_render": "3D rendered, octane render, ray tracing",
"pixel_art": "pixel art, 8-bit style, retro gaming aesthetic"
}
self.prompt_parts.append(styles_map.get(style, style))
return self
def add_lighting(self, lighting: str):
"""添加光照效果"""
self.prompt_parts.append(f"Lighting: {lighting}")
return self
def add_composition(self, composition: str):
"""添加构图"""
self.prompt_parts.append(f"Composition: {composition}")
return self
def add_quality_tags(self):
"""添加质量标签"""
quality_tags = [
"masterpiece",
"best quality",
"highly detailed",
"sharp focus",
"professional"
]
self.prompt_parts.extend(quality_tags)
return self
def build(self) -> str:
"""构建最终提示词"""
return ", ".join(self.prompt_parts)
# 使用示例
prompt_builder = DallE3PromptBuilder()
prompt = (prompt_builder
.add_subject("a majestic dragon perched on a mountain peak")
.add_style("3d_render")
.add_lighting("dramatic sunset lighting, golden hour")
.add_composition("rule of thirds, dynamic angle")
.add_quality_tags()
.build())
print(f"优化后的提示词: {prompt}")
# 批量生成不同风格
def generate_style_variations(base_prompt: str):
styles = ["natural", "vivid"]
sizes = ["1024x1024", "1024x1792", "1792x1024"]
results = []
for style in styles:
for size in sizes:
response = client.images.generate(
model="dall-e-3",
prompt=base_prompt,
size=size,
style=style,
quality="hd"
)
results.append({
"style": style,
"size": size,
"url": response.data[0].url
})
return results三、高级应用场景
商业应用
# 高级应用场景
class DallE3Applications:
def __init__(self, api_key: str):
self.client = openai.OpenAI(api_key=api_key)
def generate_product_mockup(self, product: str, context: str):
"""产品效果图生成"""
prompt = f"""
Professional product photography of {product}.
Context: {context}
Style: Clean, minimalist, high-end commercial photography
Lighting: Soft studio lighting with subtle shadows
Background: Simple gradient or solid color
Focus: Sharp focus on product with slight depth of field
"""
response = self.client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1792x1024",
quality="hd",
style="natural"
)
return response.data[0].url
def create_storyboard(self, scenes: list):
"""创建故事板"""
storyboard = []
for i, scene in enumerate(scenes):
prompt = f"""
Storyboard frame {i+1}:
{scene['description']}
Style: Professional storyboard illustration, pencil sketch style
Composition: {scene.get('shot_type', 'medium shot')}
Characters: {scene.get('characters', 'N/A')}
"""
response = self.client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1024x1024",
quality="standard"
)
storyboard.append({
"scene": i+1,
"image_url": response.data[0].url,
"description": scene['description']
})
return storyboard
def generate_logo_concept(self, brand_name: str, industry: str, values: list):
"""Logo概念设计"""
prompt = f"""
Modern logo design for '{brand_name}'
Industry: {industry}
Brand values: {', '.join(values)}
Style: Minimalist, scalable, memorable
Design: Vector-style, clean lines, professional
Color scheme: Suitable for both light and dark backgrounds
"""
response = self.client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1024x1024",
quality="hd",
style="vivid"
)
return response.data[0].url
# 使用场景示例
app = DallE3Applications(api_key="your-key")
# 1. 电商产品图
product_image = app.generate_product_mockup(
product="wireless headphones",
context="premium audio equipment for professionals"
)
# 2. 故事板创作
scenes = [
{"description": "Hero enters ancient temple", "shot_type": "wide shot"},
{"description": "Close-up of mysterious artifact glowing", "shot_type": "close-up"},
{"description": "Hero running from collapsing temple", "shot_type": "action shot"}
]
storyboard = app.create_storyboard(scenes)
# 3. Logo设计
logo = app.generate_logo_concept(
brand_name="TechNova",
industry="AI Technology",
values=["innovation", "simplicity", "future"]
)四、最佳实践
✨ 提示词技巧
- ✅ 详细描述主体、风格、光线
- ✅ 使用专业术语提高质量
- ✅ 指定构图和视角
- ✅ 添加质量标签
⚙️ 参数优化
- ✅ HD质量用于最终输出
- ✅ Natural风格更真实
- ✅ Vivid风格更艺术化
- ✅ 选择合适的尺寸比例