一、温故知新
回顾前面几篇文章,我们分别对文生图的案例演示和RAG Query改写做了详细介绍,今天我们再趣味性的强化一下两者的应用途径,结合两个模型Qwen-Turbo和Qwen-Image同时使用,将自然语言处理与计算机视觉完美结合,发现两者的奥妙之处。
二、系统介绍
先看看展示界面:
示例关键词:
北极光, 日出
示例生成的文案:
极光在晨曦中缓缓舞动,淡绿色与紫色的光带如丝绸般飘荡在深蓝色的天空。太阳刚刚升起,金色的光芒从地平线洒下,照亮了覆盖着薄霜的雪原。冰湖倒映着绚丽的极光与初升的太阳,整个画面充满神秘与宁静,空气中弥漫着清冷而纯净的气息。
生成的图片:
看系统界面,清楚我们使用Gradio构建的一个演示界面,该界面将展示如何使用Qwen-Turbo生成提示词,然后使用Qwen-Image生成图像。 我们将按照之前的设计,将流程分为两个主要步骤:先生成提示词,然后生成图像。在提示词生成成功之前,直接生成图像将会给出提示先生成提示词。
系统的核心在于三个主要功能模块:关键词管理、提示词生成和图像处理。关键词管理系统提供了结构化的选择方式,用户可以从多个类别中选择感兴趣的关键词,系统会自动将这些关键词组合成有意义的查询。
提示词生成引擎是系统的智能核心,它不仅简单拼接关键词,而是理解用户的创作意图,生成富有创意和细节的图像描述。图像处理模块则负责将文本描述转换为视觉内容,支持多种风格和尺寸的定制。
系统主要包含以下功能:
**1. 关键词选择:**使用选项卡和复选框组让用户选择关键词。
**2. 参数设置:**下拉菜单选择尺寸和风格,文本框输入负面提示词。
**3. 生成提示词:**点击按钮调用Qwen-Turbo生成提示词,并显示在文本框中。
**4. 生成图像:**只有在提示词生成后才可点击,调用Qwen-Image生成图像并显示。
**5. 状态显示:**显示操作的状态信息(成功、错误、进行中)。
**6. 清除和下载功能:**清除所有选择,下载生成的图像。
三、系统流程
实际操作过程简单直观:首先在界面左侧选择相关的关键词,这些关键词按主题分类,方便快速查找和选择。接着设置图像参数,包括尺寸、风格等可选设置。
点击"生成提示词"后,系统调用Qwen-Turbo生成详细的图像描述。获得满意的提示词后,可以点击"生成图像"按钮,系统将调用Qwen-Image创建最终的视觉作品。整个过程通常只需要几分钟,具体时间取决于图像复杂度和服务器负载。
1. 流程图
2. 流程介绍
2.1 应用启动与初始化
- 用户启动应用,加载Gradio界面
- 系统初始化API连接和参数设置
- 生成图像按钮初始状态为禁用
2.2 提示词生成
- 用户选择关键词和参数
- 点击生成提示词按钮
- 系统验证输入有效性
- 调用Qwen-Turbo API生成详细图像描述
- 处理API响应,显示生成的提示词或错误信息
- 成功生成提示词后启用生成图像按钮
2.3 图像生成
- 点击生成图像按钮
- 系统验证提示词存在且有效
- 调用Qwen-Image API生成图像
- 异步处理API响应
- 下载生成的图像并显示在界面
四、代码参考与解析
import dashscope
from dashscope import ImageSynthesis
import requests
import tempfile
import os
import time
from PIL import Image
import io
import base64
import json
import gradio as gr
# 设置您的 DashScope API Key
DASHSCOPE_API_KEY = os.environ.get("DASHSCOPE_API_KEY", "") # 请替换为您的实际API Key
# 初始化 DashScope
dashscope.api_key = DASHSCOPE_API_KEY
# DashScope Qwen-Image 支持的风格参数
SUPPORTED_STYLES = {
"自动": "auto",
"3D卡通": "<3d cartoon>",
"动漫": "<anime>",
"油画": "<oil painting>",
"水彩": "<watercolor>",
"素描": "<sketch>",
"中国画": "<chinese painting>",
"扁平插画": "<flat illustration>",
"摄影": "<photography>",
"肖像": "<portrait>"
}
# DashScope Qwen-Image 支持的尺寸参数
SUPPORTED_SIZES = {
"正方形 (1024x1024)": "1024*1024",
"横屏 (1280x720)": "1280*720",
"竖屏 (720x1280)": "720*1280"
}
# 多组关键词选项
KEYWORD_GROUPS = {
"自然": ["森林", "河流", "山脉", "星空", "湖泊", "海洋", "沙漠", "冰川", "草原", "瀑布",
"峡谷", "岛屿", "火山", "洞穴", "森林小径", "珊瑚礁", "热带雨林", "北极光", "温泉", "绿洲"],
"城市": ["高楼", "街道", "公园", "夜景", "桥梁", "广场", "地铁", "商业区", "住宅区", "地标建筑",
"咖啡馆", "博物馆", "美术馆", "火车站", "机场", "港口", "书店", "餐厅", "购物中心", "体育场"],
"人物": ["儿童", "老人", "情侣", "家庭", "学生", "医生", "艺术家", "运动员", "上班族", "旅行者",
"科学家", "教师", "音乐家", "舞蹈家", "演员", "作家", "摄影师", "厨师", "农民", "消防员", "解放军"],
"动物": ["猫咪", "小狗", "熊猫", "老虎", "狮子", "大象", "海豚", "鸟类", "蝴蝶", "兔子",
"猴子", "长颈鹿", "斑马", "企鹅", "考拉", "袋鼠", "熊", "狐狸", "狼", "马"],
"植物": ["樱花", "玫瑰", "竹子", "松树", "向日葵", "仙人掌", "荷叶", "枫叶", "薰衣草", "郁金香",
"百合", "牡丹", "菊花", "桂花", "茉莉花", "桃花", "杜鹃花", "梅花", "向日葵", "绿萝"],
"物品": ["礼帽", "手杖", "书本", "咖啡杯", "吉他", "相机", "钟表", "花瓶", "雨伞", "背包",
"眼镜", "围巾", "手套", "项链", "耳环", "戒指", "手表", "钱包", "手机", "笔记本电脑"],
"天气": ["晴天", "雨天", "雪天", "雾天", "日落", "日出", "彩虹", "雷电", "阴天", "微风",
"大风", "暴雨", "暴雪", "冰雹", "台风", "霜冻", "露水", "雾霾", "多云", "晴朗"],
"场景": ["咖啡馆", "图书馆", "博物馆", "海滩", "山脉", "森林", "花园", "未来城市", "赛博朋克", "太空站",
"海底世界", "古代城堡", "乡村小屋", "豪华别墅", "小木屋", "沙漠帐篷", "雪山营地", "太空飞船", "阅兵式"]
}
def generate_prompt_with_qwen(keywords_dict, style=None):
"""
使用通义千问Turbo模型根据关键词生成详细的图像描述提示词
"""
url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {DASHSCOPE_API_KEY}"
}
# 构建风格提示
style_prompt = ""
if style and style != "自动":
style_name = style
style_prompt = f",风格为{style_name}"
# 从字典中提取所有选中的关键词
all_keywords = []
for group, keywords in keywords_dict.items():
if keywords:
all_keywords.extend(keywords)
# 如果没有选择任何关键词,返回错误
if not all_keywords:
return None, "请至少选择一个关键词"
# 将关键词列表组合成字符串
keywords_str = ",".join(all_keywords)
# 构建请求体
payload = {
"model": "qwen-turbo",
"input": {
"messages": [
{
"role": "system",
"content": "你是一个专业的图像描述生成助手。你的任务是根据用户提供的关键词,生成一段150字以内的详细、生动、富有想象力的图像描述,用于AI文生图模型。描述应该包含场景、主体、动作、环境、光线、色彩、情绪等细节,使AI能够生成高质量的图像。"
},
{
"role": "user",
"content": f"请根据以下关键词生成一段详细的图像描述{style_prompt},描述应该具体、生动,包含足够的细节,适合用于AI文生图:{keywords_str}。请直接给出描述文本,不要包含任何解释或其他内容。"
}
]
},
"parameters": {
"temperature": 0.8,
"top_p": 0.8,
"result_format": "message"
}
}
try:
print(f"发送请求到Qwen-Turbo API: {json.dumps(payload, ensure_ascii=False)}")
response = requests.post(url, headers=headers, json=payload)
response_data = response.json()
print(f"Qwen-Turbo API响应: {json.dumps(response_data, ensure_ascii=False, indent=2)}")
if response.status_code == 200 and "output" in response_data:
# 提取生成的提示词
generated_prompt = response_data["output"]["choices"][0]["message"]["content"]
return generated_prompt, None
else:
error_msg = f"Qwen-Turbo API调用失败,状态码: {response.status_code}"
if "message" in response_data:
error_msg += f", 错误信息: {response_data['message']}"
return None, error_msg
except Exception as e:
error_msg = f"调用Qwen-Turbo时发生异常: {str(e)}"
print(error_msg)
import traceback
traceback.print_exc()
return None, error_msg
def generate_image_direct(prompt, size, style=None, negative_prompt=None):
"""
直接使用HTTP请求调用DashScope API,避免dashscope库的问题
"""
if not DASHSCOPE_API_KEY or DASHSCOPE_API_KEY == "":
return "请先设置您的 DashScope API Key"
url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
"X-DashScope-Async": "enable" # 启用异步调用
}
# 构建请求体
payload = {
"model": "wanx-v1",
"input": {
"prompt": prompt
},
"parameters": {
"size": size,
"n": 1
}
}
# 添加风格参数(如果提供且不是"自动")
if style and style != "自动":
# 将中文风格名称转换为API支持的格式
style_code = SUPPORTED_STYLES.get(style, "auto")
payload["parameters"]["style"] = style_code
# 添加负面提示(如果提供)
if negative_prompt and negative_prompt.strip():
payload["parameters"]["negative_prompt"] = negative_prompt
try:
print(f"发送请求到DashScope API: {json.dumps(payload, ensure_ascii=False)}")
response = requests.post(url, headers=headers, json=payload)
response_data = response.json()
print(f"API响应: {json.dumps(response_data, ensure_ascii=False, indent=2)}")
if response.status_code == 200:
# 检查是否为异步任务
if "output" in response_data and "task_status" in response_data["output"]:
task_id = response_data["output"]["task_id"]
print(f"异步任务已创建,任务ID: {task_id}")
# 轮询任务状态
return poll_task_result(task_id)
elif "output" in response_data and "results" in response_data["output"]:
# 同步响应,直接获取结果
if len(response_data["output"]["results"]) > 0:
image_url = response_data["output"]["results"][0]["url"]
return download_and_save_image(image_url)
else:
return "API响应中未包含有效结果"
else:
return "API响应格式不正确"
else:
error_msg = f"API调用失败,状态码: {response.status_code}"
if "message" in response_data:
error_msg += f", 错误信息: {response_data['message']}"
return error_msg
except Exception as e:
error_msg = f"发生异常: {str(e)}"
print(error_msg)
import traceback
traceback.print_exc()
return error_msg
def poll_task_result(task_id, max_attempts=30, delay=2):
"""
轮询异步任务结果
"""
if not DASHSCOPE_API_KEY or DASHSCOPE_API_KEY == "":
return "请先设置您的 DashScope API Key"
url = f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}"
headers = {
"Authorization": f"Bearer {DASHSCOPE_API_KEY}"
}
attempt = 0
while attempt < max_attempts:
try:
print(f"轮询任务状态,尝试 {attempt + 1}/{max_attempts}")
response = requests.get(url, headers=headers)
response_data = response.json()
print(f"任务状态响应: {json.dumps(response_data, ensure_ascii=False, indent=2)}")
if response.status_code == 200:
if "output" not in response_data:
return "API响应格式不正确,缺少output字段"
task_status = response_data["output"].get("task_status", "UNKNOWN")
if task_status == "SUCCEEDED":
if ("output" in response_data and
"results" in response_data["output"] and
len(response_data["output"]["results"]) > 0):
image_url = response_data["output"]["results"][0]["url"]
return download_and_save_image(image_url)
else:
return "任务成功但未包含有效结果"
elif task_status in ["FAILED", "CANCELED"]:
error_msg = f"任务失败,状态: {task_status}"
if "message" in response_data["output"]:
error_msg += f", 错误信息: {response_data['output']['message']}"
return error_msg
else:
# 任务仍在处理中,等待后再次尝试
time.sleep(delay)
attempt += 1
else:
return f"获取任务状态失败,状态码: {response.status_code}"
except Exception as e:
error_msg = f"轮询任务时发生异常: {str(e)}"
print(error_msg)
time.sleep(delay)
attempt += 1
return "任务处理超时"
def download_and_save_image(image_url):
"""
下载图像并保存到临时文件
"""
try:
img_response = requests.get(image_url)
if img_response.status_code == 200:
# 创建临时文件保存图像
with tempfile.NamedTemporaryFile(delete=False, suffix='.png') as f:
f.write(img_response.content)
image_path = f.name
print("图像下载成功!")
return image_path
else:
return f"下载图像失败,状态码: {img_response.status_code}"
except Exception as e:
return f"下载图像时发生异常: {str(e)}"
# 创建 Gradio 界面
def create_interface():
with gr.Blocks(title="Qwen-Image 智能文生图演示", theme=gr.themes.Soft()) as demo:
gr.Markdown("# 🎨 Qwen-Turbo 关键字生成文本 + Qwen-Image 智能文生图演示")
gr.Markdown("使用通义千问Turbo模型将关键词转换为详细描述,再用通义万相生成图像 ")
# 创建关键词选项卡
keyword_components = {}
with gr.Row():
with gr.Column(scale=1):
# 关键词选项卡 - 移除了不支持的label参数
with gr.Tabs():
for group_name, keywords in KEYWORD_GROUPS.items():
with gr.Tab(group_name):
# 为每组关键词创建多选框,并存储在字典中
keyword_components[group_name] = gr.CheckboxGroup(
choices=keywords,
label=f"{group_name}类关键词",
interactive=True
)
# 使用gr.Row()将图像尺寸和图像风格合并成一行显示
with gr.Row():
with gr.Column(scale=1):
# 使用支持的尺寸选项
size = gr.Dropdown(
choices=list(SUPPORTED_SIZES.keys()),
value="横屏 (1280x720)",
label="图像尺寸"
)
with gr.Column(scale=1):
# 使用支持的风格选项
style = gr.Dropdown(
choices=list(SUPPORTED_STYLES.keys()),
value="自动",
label="图像风格"
)
negative_prompt = gr.Textbox(
label="负面提示词 (可选)",
placeholder="请输入不希望出现在图像中的内容",
lines=1
)
with gr.Row():
generate_prompt_btn = gr.Button("Qwen-Turbo 生成提示词", variant="primary")
generate_image_btn = gr.Button("Qwen-Image 生成图像", variant="secondary")
# 生成的提示词显示
generated_prompt = gr.Textbox(
label="生成的详细提示词",
placeholder="这里将显示通义千问生成的详细提示词",
lines=3,
interactive=True
)
with gr.Column(scale=1):
# 将已选关键词显示框移到生成的图像上方
selected_keywords_display = gr.Textbox(
label="已选关键词",
placeholder="这里将显示所有已选择的关键词",
lines=1,
interactive=False
)
output_image = gr.Image(
label="生成的图像",
interactive=False
)
status_text = gr.Textbox(
label="状态信息",
interactive=False,
lines=1
)
with gr.Row():
download_btn = gr.Button("下载图像", variant="primary")
clear_btn = gr.Button("清除", variant="stop")
# 将使用说明移到主Row外部,实现全屏显示
with gr.Row():
with gr.Column():
gr.Markdown("### 使用说明")
gr.Markdown("""
__1.__ 在左侧选项卡中选择您想要图像的关键词,可以从多组不同类型中选择关键词 __2.__ 选择图像尺寸和风格
__3. 可选:__ 在负面提示词框中输入不希望出现在图像中的内容
__4.__ 点击"生成提示词"按钮生成详细描述 __5.__ 点击"生成图像"按钮根据提示词生成图像
__6.__ 注意使用前必须先设置好 __DashScope API Key__。
""")
# 添加一个函数,用于即时更新已选关键词显示
def update_selected_keywords_display(*args):
# args包含所有关键词选择组件的当前值
all_selected_keywords = []
for selected in args:
if selected:
all_selected_keywords.extend(selected)
# 将已选关键词格式化为字符串显示
keywords_display = ", ".join(all_selected_keywords)
return keywords_display
# 处理生成提示词按钮点击事件
def on_generate_prompt_click(*args):
# 前 len(KEYWORD_GROUPS) 个参数是每组关键词的选择结果
selected_keywords_dict = {}
all_selected_keywords = []
for i, group_name in enumerate(KEYWORD_GROUPS.keys()):
selected_keywords_dict[group_name] = args[i]
# 收集所有已选关键词
if args[i]:
all_selected_keywords.extend(args[i])
# 下一个参数是尺寸,再下一个是风格
style = args[len(KEYWORD_GROUPS) + 1]
if not any(selected_keywords_dict.values()):
yield None, "", "⚠️ 警告:请至少选择一个关键词!"
return
if not DASHSCOPE_API_KEY or DASHSCOPE_API_KEY == "您的API_KEY":
yield None, "", "⚠️ 警告:请先设置您的 DashScope API Key!"
return
# 更新状态
status = "正在使用通义千问生成详细提示词..."
# 将已选关键词格式化为字符串显示
keywords_display = ", ".join(all_selected_keywords)
yield None, keywords_display, status
# 使用通义千问生成详细提示词
prompt, error = generate_prompt_with_qwen(selected_keywords_dict, style)
if error:
yield None, keywords_display, f"❌ 生成提示词失败: {error}"
else:
yield prompt, keywords_display, "✅ 提示词生成成功!"
# 处理生成图像按钮点击事件
def on_generate_image_click(prompt, size, style, negative_prompt):
if not prompt.strip():
yield None, "⚠️ 异常提醒:请先生成提示词!"
return
if not DASHSCOPE_API_KEY or DASHSCOPE_API_KEY == "您的API_KEY":
yield None, "⚠️ 异常提醒:请先设置您的 DashScope API Key!"
return
# 更新状态
status = "正在生成图像,这可能需要一些时间..."
yield None, status
# 将用户友好的尺寸名称转换为API格式
api_size = SUPPORTED_SIZES.get(size, "1024*1024")
# 调用API生成图像
result = generate_image_direct(prompt, api_size, style, negative_prompt)
# 检查结果是图像路径还是错误信息
if isinstance(result, str) and result.endswith('.png') and os.path.exists(result):
yield result, "✅ 图像生成成功!"
else:
yield None, f"❌ 生成图像失败: {result}"
# 处理清除按钮点击事件
def on_clear_click():
# 清除关键词选择
clear_keywords = [[] for _ in range(len(KEYWORD_GROUPS))]
# 清除其他组件
return clear_keywords + [None, "", "已清除图像和提示词"]
# 准备输入参数列表:所有关键词组件 + [尺寸, 风格]
generate_prompt_inputs = list(keyword_components.values()) + [size, style]
generate_prompt_btn.click(
fn=on_generate_prompt_click,
inputs=generate_prompt_inputs,
outputs=[generated_prompt, selected_keywords_display, status_text]
)
generate_image_btn.click(
fn=on_generate_image_click,
inputs=[generated_prompt, size, style, negative_prompt],
outputs=[output_image, status_text],
api_name="generate_image",
show_progress=True
)
# 处理下载按钮点击事件
def on_download_click(image):
if image is None:
return "没有可下载的图像"
# 获取当前时间作为文件名
timestamp = int(time.time())
filename = f"qwen_image_{timestamp}.png"
try:
# 如果图像是文件路径
if isinstance(image, str) and os.path.exists(image):
import shutil
shutil.copy2(image, filename)
return f"图像已保存为 {filename}"
else:
return "无法保存图像:无效的图像路径"
except Exception as e:
return f"保存图像时发生错误: {str(e)}"
download_btn.click(
fn=on_download_click,
inputs=output_image,
outputs=status_text
)
# 准备清除按钮的输出参数
clear_outputs = list(keyword_components.values()) + [output_image, generated_prompt, selected_keywords_display, status_text]
clear_btn.click(
fn=on_clear_click,
inputs=None,
outputs=clear_outputs
)
# 为每个关键词选择组件添加事件监听,实现即时更新已选关键词显示
for component in keyword_components.values():
component.change(
fn=update_selected_keywords_display,
inputs=list(keyword_components.values()),
outputs=selected_keywords_display
)
return demo
# 启动 Gradio 应用
if __name__ == "__main__":
# 检查API密钥是否已设置
if not DASHSCOPE_API_KEY or DASHSCOPE_API_KEY == "您的API_KEY":
print("警告: 请先设置您的 DashScope API Key")
print("您可以在代码中设置 DASHSCOPE_API_KEY 变量")
# 创建并启动 Gradio 界面
demo = create_interface()
demo.launch(
server_name="0.0.0.0", # 允许外部访问
server_port=7861, # 设置端口
share=False, # 不创建公开链接
debug=True # 启用调试模式
)
结构分析:
1. 导入和初始化
import dashscope
from dashscope import ImageSynthesis
import requests
import tempfile
import os
import time
from PIL import Image
import io
import base64
import json
import gradio as gr
# 设置API密钥
DASHSCOPE_API_KEY = os.environ.get("DASHSCOPE_API_KEY", "")
dashscope.api_key = DASHSCOPE_API_KEY
- 导入必要的库,包括DashScope SDK、HTTP请求、文件处理、图像处理和Gradio界面库
- 从环境变量获取API密钥并进行初始化
2. 参数配置
# 支持的风格和尺寸参数
SUPPORTED_STYLES = {...}
SUPPORTED_SIZES = {...}
# 多组关键词选项
KEYWORD_GROUPS = {
"自然": ["森林", "河流", ...],
"城市": ["高楼", "街道", ...],
# ... 其他类别
}
- 定义了API支持的图像风格和尺寸选项
- 创建了分类的关键词库,方便用户选择
3. 核心功能函数
3.1 提示词生成函数
def generate_prompt_with_qwen(keywords_dict, style=None):
- 使用Qwen-Turbo模型根据用户选择的关键词生成详细的图像描述
- 构建系统提示词,指导模型生成适合AI绘画的描述
- 处理API响应并提取生成的提示词
- 输入:用户选择的关键词和风格参数
处理:构建API请求,调用Qwen-Turbo模型
输出:生成的详细图像描述提示词
3.2 图像生成函数
def generate_image_direct(prompt, size, style=None, negative_prompt=None):
- 直接使用HTTP请求调用DashScope API生成图像
- 支持异步任务处理和轮询机制
- 处理风格、尺寸和负面提示词参数
- 输入:生成的提示词和用户设置的参数
处理:构建API请求,调用Qwen-Image模型
输出:图像URL或任务ID(异步任务)
3.3 辅助函数
def poll_task_result(task_id, max_attempts=30, delay=2):
def download_and_save_image(image_url):
- 实现异步任务状态轮询
- 下载生成的图像并保存到临时文件
4. Gradio界面构建
def create_interface():
- 创建多选项卡关键词选择界面
- 设计图像参数配置区域(尺寸、风格、负面提示词)
- 设置提示词生成和图像生成按钮
- 添加状态显示和结果展示区域
5. 事件处理逻辑
def on_generate_prompt_click(*args):
def on_generate_image_click(prompt, size, style, negative_prompt):
def on_clear_click():
def on_download_click(image):
- 处理用户交互事件
- 协调提示词生成和图像生成流程
- 实现状态更新和结果反馈
6. 函数的执行流程
这是一个简化流程图,清晰地展示了Qwen-Turbo和Qwen-Image协同工作的核心流程
五、应用场景与案例赏析
这一技术在实际应用中展现出巨大价值。在创意设计领域,设计师可以快速生成概念图、灵感素材;在内容创作方面,自媒体工作者能够为文章配图、制作吸引人的封面;在教育领域,教师可以创建教学插图、可视化教材。
商业应用案例同样丰富:电商企业可以用其生成产品展示图,营销团队可以创作广告素材,甚至房地产行业也能用于生成房产概念图。这些应用不仅提高了工作效率,更重要的是开启了新的创作可能性。
-
案例1
**关键词:**森林, 绿洲, 日落, 乡村小屋
**生成的文案:**夕阳西下,金色的余晖洒在宁静的森林中,一片绿洲悄然浮现。绿洲中央矗立着一座古朴的乡村小屋,屋顶覆盖着青苔,木窗透出温暖的灯光。小屋前的小径铺满落叶,微风轻拂,树叶沙沙作响。天空染上橙红与紫罗兰的渐变色彩,映照在绿洲的水面上,波光粼粼,宛如梦境。整个画面充满温馨与安宁,仿佛时间在此静止。
生成的图片:
-
案例2
**关键词:**山脉, 星空, 摄影师, 晴朗
**生成的文案:**摄影师伫立在巍峨的山脉之巅,夜空如墨,繁星点点,银河横跨天际,璀璨夺目。他专注地调整着相机参数,镜头对准那片神秘的星空,脸上带着沉静而兴奋的神情。四周寂静无声,只有微风轻拂山岩,月光洒落在雪峰之上,银白与深蓝交织,营造出宁静而壮丽的氛围。
生成的图片:
-
案例3
**关键词:**森林小径, 手机, 古代城堡
**生成的文案:**幽深的森林小径蜿蜒穿过茂密的树影,青苔覆盖的石板上残留着昨夜的露水。一位旅人手持老旧手机,神情专注地查看屏幕,仿佛在寻找某种指引。远处,一座古老的城堡矗立在薄雾中,尖顶刺破灰蓝色的天空,墙壁爬满藤蔓,散发着神秘与沧桑的气息。阳光透过树叶洒下斑驳光影,营造出一种静谧而略带忧郁的氛围。
生成的图片:
-
案例4
**关键词:**高楼, 暴雪, 赛博朋克
**生成的文案:**高楼在暴雪中闪烁着冷艳的霓虹光芒,赛博朋克风格的灯光在白色雪花中投下斑斓的光影。街道上行人稀少,穿着厚重羽绒服的影子在闪烁的广告屏下匆匆而过。巨大的全息投影在空中浮现,模糊的数字代码在风雪中若隐若现,整个城市仿佛被冻结在未来的梦境之中。
生成的图片:
六、总结
为了获得最佳效果,我们也应该掌握一些实用技巧:在关键词选择时,尽量选择相关性强、具体的词汇;在提示词生成后,可以适当编辑优化;对于图像生成,可以尝试不同的风格参数组合。
代码性能方面,通过合理的API调用策略和缓存机制,可以优化提高响应速度。同时,还应该了解各种参数对生成结果的影响,以便更好地控制输出质量。
随着AI技术的不断发展,这一领域仍有巨大提升空间。未来的版本可能会支持更复杂的提示词结构、更精细的风格控制、更快的生成速度。同时,应用场景也将进一步扩展,可能涵盖视频生成、3D模型创建等更复杂的视觉内容生产。
Qwen-Turbo与Qwen-Image的组合不仅是一次思维的风暴,也是AI内容创作的实际落地。双模型架构不仅技术先进,更重要的是实用性强,能够真正解决实际创作中的痛点。