“文生图”(Text-to-Image)是一种基于人工智能技术的图像生成方式,指通过自然语言描述(文本)自动生成对应图像的过程。它是多模态 AI 的重要应用场景,实现了从抽象语义到具象视觉的转化。
注意事项:
项目基于 Spring AI 快速聊天 章节的项目基础进行开发。
要生成图片,免费的 api-key 不可用,需要购买高级接口的 api-key。
在 application.yml 配置文件中,添加 image.options.model 配置,指定生成图片的模型,如下:
spring: application: name: springai_demo1 # AI配置 ai: # openai相关配置 openai: # 基础地址 base-url: https://api.xty.app # AI KEY # 需要使用高级接口的KEY api-key: sk-TmZpI4DifxqHTNb6AXPS6rmsSWf**************** # 聊天模型配置 chat: options: model: gpt-3.5-turbo # 图片模型配置,查询余额 https://cx.xty.app/#/ image: options: # 需要高级接口 model: dall-e-3
注意:要生成图片需要使用高级接口的 api-key。
package com.hxstrive.springai.springai_demo1.controller; import jakarta.annotation.Resource; import org.springframework.ai.image.ImagePrompt; import org.springframework.ai.image.ImageResponse; import org.springframework.ai.openai.OpenAiImageModel; import org.springframework.ai.openai.OpenAiImageOptions; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * OpenAi 图片相关接口 * @author hxstrive.com */ @RestController @RequestMapping("/ai/openai") public class OpenAiImageController { @Resource private OpenAiImageModel openaiImageModel; /** * 生成图片,使用方式: * http://localhost:8080/ai/openai/image/generate?prompt=武松骑着老虎写代码 */ @RequestMapping(value = "/image/generate", produces = "text/html;charset=UTF-8") public String generate(@RequestParam("prompt") String prompt) { ImageResponse response = openaiImageModel.call( new ImagePrompt(prompt, OpenAiImageOptions.builder() .quality("hd") .N(1) .height(1024) .width(1024).build()) ); String url = response.getResult().getOutput().getUrl(); return "<img src=\"" + url + "\" />"; } }
上述代码,接收用户输入的文本描述(prompt),调用 OpenAI 的图像生成模型生成 1 张 1024×1024 的高清图像,并返回图像的 HTML <img> 标签。其中:
ImagePrompt:封装用户文本描述和图像生成参数。
OpenAiImageOptions:配置生成选项:
quality("hd"):指定高清质量(可能影响 API 调用成本)。
N(1):生成 1 张候选图像(默认通常为 1 张)。
height(1024) 和 width(1024):设置图像分辨率为 1024×1024 像素。
运行项目,使用浏览器打开 http://localhost:8080/ai/openai/image/generate?prompt=武松骑着老虎写代码 地址,效果如下图:
注意,图片生成需要更耗时,要多等待片刻。