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风格更艺术化
  • ✅ 选择合适的尺寸比例