弗兰的悲惨之旅
99.73M · 2026-04-04
s01 > s02 > s03 > s04 > s05 > s06 > s07 > s08 > [ s09 ] s10 > s11 > s12 > s13 > s14 > s15 > s16 > s17 > s18
Text to Image(文生图) 是 AI 的一种能力,你只需要输入一段文字描述,AI 就能生成对应的图片。
就像有一个"画家"根据你的描述作画:
/_/
( o.o )
> ^ <
(当然,真实AI生成的是真实的照片风格的图片)
文生图通常使用扩散模型(Diffusion Model) ,核心原理是:
本章节使用的是阿里云百炼的 wanx2.1-t2i-turbo 模型,它的特点是:
在 Spring AI 中,ImageModel 是图像生成的核心接口:
// ImageModel 是 AI 图像生成的入口
// 类似 ChatModel 对话模型的定位
public interface ImageModel {
// 根据文字描述生成图片
ImageResponse call(ImagePrompt prompt);
}
ImagePrompt 是图像生成的请求对象:
// 创建图像生成请求
ImagePrompt prompt = new ImagePrompt(
"一只可爱的橘猫", // 用户输入的描述
options // 可选的参数配置(图片数量、尺寸等)
);
ImageOptions 包含各种生成参数:
| 参数 | 说明 | 可选值 |
|---|---|---|
| model | 使用的模型 | wanx2.1-t2i-turbo |
| size | 图片尺寸 | 1024x1024, 512x512 等 |
| quality | 生成质量 | standard, hd |
| style | 风格 | 写实、卡通、水墨等 |
package com.atguigu.study.controller;
import com.alibaba.cloud.ai.dashscope.image.DashScopeImageOptions;
import jakarta.annotation.Resource;
import org.springframework.ai.image.ImageModel;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 文本生成图像控制器
* 展示如何调用 AI 根据文字描述生成图片
*/
@RestController
public class Text2ImageController
{
// 注入图像生成模型
// 和 ChatModel 类似,ImageModel 也是通过自动配置注入的
@Resource
private ImageModel imageModel;
/**
* 文生图主方法
*
* 接口:小猫咪
*
* @param prompt 图片描述(必填)
* 越详细,AI生成越符合预期
* @return 生成成功的图片URL(返回阿里云的临时访问链接)
*/
@GetMapping(value = "/t2i/image")
public String image(@RequestParam(name = "prompt", defaultValue = "刺猬") String prompt)
{
// 1. 构建图像生成选项
// DashScopeImageOptions 是阿里云专用的选项类
DashScopeImageOptions options = DashScopeImageOptions.builder()
.withModel("wanx2.1-t2i-turbo") // 指定使用阿里云的图像生成模型
// .withSize("1024x1024") // 可以设置图片尺寸,默认1024x1024
// .withStyle("<style>") // 可以设置风格
// .withN(1) // 生成数量,默认1张
.build();
// 2. 创建图像生成请求
// ImagePrompt 接受两个参数:
// - 第一个:用户输入的文本描述(prompt)
// - 第二个:生成选项(可省略)
ImagePrompt imagePrompt = new ImagePrompt(prompt, options);
// 3. 调用模型生成图片
// 返回值是 ImageResponse 对象
ImageResponse response = imageModel.call(imagePrompt);
// 4. 从结果中提取图片 URL
// getResult().getOutput().getUrl() 是标准的提取路径
// 返回的是阿里云百炼的临时图片 URL
return response.getResult().getOutput().getUrl();
}
}
调用成功后,返回的是一个图片访问链接:
https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation...
// 简单描述(效果可能一般)
prompt = "一只猫"
// 详细描述(效果更好)
prompt = "一只可爱的橘猫,胖乎乎的,大眼睛,躺在草地上,阳光明媚,摄影风格,高清"
// 结构化描述(效果更好)
prompt = """
主题:一只可爱的橘猫
姿态:躺着的,懒洋洋的
环境:绿色草地上,有阳光
风格:摄影写实风格
质量:高清,8K
"""
| 风格 | 英文关键词 | 适用场景 |
|---|---|---|
| 写实风格 | photorealistic, realistic photo | 产品图、人物照 |
| 卡通风格 | cartoon, anime, illustration | 插画、表情包 |
| 水墨风格 | Chinese ink painting, shuimo | 国风、艺术创作 |
| 油画风格 | oil painting | 艺术画作 |
| 3D风格 | 3D render, C4D | 创意设计 |
| 概念 | 说明 |
|---|---|
| ImageModel | 图像生成模型接口 |
| ImagePrompt | 图像生成的请求对象 |
| DashScopeImageOptions | 阿里云图像模型配置项 |
| wanx2.1-t2i-turbo | 阿里云文生图模型 |
1. 准备文字描述(prompt)
2. 创建 ImageOptions 配置参数
3. 创建 ImagePrompt 请求
4. 调用 ImageModel.call()
5. 从响应中提取 URL
在完整应用里,文生图常被包装成工具:
本章重点:
下章剧透(s10):
本章聚焦的是 文本生成图像。但在实际项目里,图像能力通常有两类:
| 能力类型 | 说明 |
|---|---|
| 图像生成 | 根据文字描述生成图片 |
| 图像理解 | 把图片作为输入,让模型识别内容 |
| Agent 工具化 | 把图像生成包装成工具,交给 Agent 自主决定是否调用 |
所以本章学会 ImageModel 之后,后续就可以自然衔接到多模态和 Agent 场景。