Spring AI 教程

Spring AI 快速文生图

“文生图”(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。

OpenAiImageController 控制器

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=武松骑着老虎写代码 地址,效果如下图:

20250621114326.gif

注意,图片生成需要更耗时,要多等待片刻。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号