行业资讯 2025年08月6日
0 收藏 0 点赞 797 浏览 4035 个字
摘要 :

文章目录 第一步:搭建项目 第二步:配置文件 第三步:创建图片生成服务 第四步:创建图片生成控制器来运行代码 第五步:运行应用程序 第六步:让图片生成更灵活(可选……




  • 第一步:搭建项目
  • 第二步:配置文件
  • 第三步:创建图片生成服务
  • 第四步:创建图片生成控制器来运行代码
  • 第五步:运行应用程序
  • 第六步:让图片生成更灵活(可选)
  • 总结

本文详细介绍了如何借助Spring AI和OpenAI的DALL-E 3模型来实现图片生成功能。文中一步步教你搭建项目、配置相关文件、创建服务和控制器,还分享了提升图片生成灵活性的方法,带你轻松上手用代码生成创意图片。

今天,咱们来看看怎么用文本提示轻松生成图片,实现这个功能要借助OpenAI的API和DALL-E 3模型。这篇文章主要聚焦Spring AI的能力探索,所以像Spring的一些基础概念,比如bean管理、启动器这些,我就不细说了,同时也不会详细讲怎么获取OpenAI API密钥。要是你还没有可用的OpenAI API密钥,可以去OpenAI官网注册账号,然后在API密钥页面生成令牌。

第一步:搭建项目

想要快速生成包含所有必要依赖的项目模板,可以用https://start.spring.io/ 这个工具。我在示例里用的是Java 17和Spring Boot 3.4.1 ,还添加了下面这些依赖:

  • Spring WEB:这个依赖能帮我们创建一个Web服务器,把REST端点作为应用程序的入口。
  • OpenAI:添加这个依赖后,只要写几行代码、做一些配置,就能轻松和OpenAI集成

点击生成后,在你用的IDE里打开下载的文件,确认pom.xml文件里有所有需要的依赖,代码如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

第二步:配置文件

接下来要配置属性文件,Spring默认用application.yaml或者application.properties文件,我这里用的是yaml格式,要是你习惯.properties格式,也可以把代码重新格式化一下。在application.yaml文件里要添加下面这些配置:

spring:
  ai:
    openai:
      api-key: [你的OpenAI api密钥]
      image:
        options:
          model: dall-e-3
          size: 1024x1024
          style: vivid
          quality: standard
          response-format: url

下面解释一下这些配置:

  • Model:写这篇文章的时候,Spring AI里能用的模型只有dall-e-3,所以就选它。
  • Size:这个是设置生成图片的尺寸,dall-e-3模型支持的尺寸有1024x10241792x10241024x1792这几种。
  • Style:选vivid风格生成的图片会更超现实;要是想让图片看起来更真实,就把值设成natural
  • Quality:有standardHD这两个选项。
  • Response-format:有urlb64_json两种选择,我为了演示方便,选的是url,用这个选项生成图片一小时内可以通过链接访问。

第三步:创建图片生成服务

下面创建一个负责生成图片的服务。代码如下:

// 声明这是一个服务类
@Service 
public class ImageGenerationService {

    // 自动注入ImageModel这个bean
    @Autowired 
    ImageModel imageModel; 
}

我们新建了一个类,并用@Service注解标注它。还自动注入了ImageModel这个bean,它是生成图片的主要接口。在第二步配置好之后,Spring Boot Starter会自动帮我们生成ImageModel接口的实现类OpenAiImageModel。类配置好后,就可以写一个方法,调用OpenAI API,用我们的文本提示生成图片了,真正展示Spring AI强大功能的时候到啦!代码如下:

// 定义生成图片的方法,接收一个文本提示作为参数
public String generateImage(String prompt) { 
    // 根据文本提示创建一个ImagePrompt对象
    ImagePrompt imagePrompt = new ImagePrompt(prompt); 
    // 调用imageModel的call方法,传入ImagePrompt对象,得到图片生成的响应结果
    ImageResponse imageResponse = imageModel.call(imagePrompt); 
    // 从响应结果里获取生成图片的URL并返回
    return imageResponse.getResult().getOutput().getUrl(); 
}

就这么简单,用Spring AI生成一张图片,实际上只需要三行代码!先根据文本提示创建ImagePrompt对象,接着用imageModel.call(imagePrompt)调用API,把响应结果存到ImageResponse变量里,最后返回生成图片的URL。不过要注意,图片生成后链接只有一小时的有效期,记得及时保存你的“大作”哦!

第四步:创建图片生成控制器来运行代码

还需要创建一个文件,让用户能执行我们的集成代码,代码如下:

// 声明这是一个处理REST请求的控制器
@RestController() 
// 设置请求映射路径为/image
@RequestMapping(\"/image\") 
public class ImageGenerationController {

    // 自动注入ImageGenerationService服务
    @Autowired 
    ImageGenerationService imageService; 

    // 处理GET请求,路径为/generate
    @GetMapping(\"/generate\") 
    // 接收一个名为prompt的请求参数,返回一个包含生成图片URL的响应实体
    public ResponseEntity<String> generateImage(@RequestParam String prompt) { 
        return ResponseEntity.ok(imageService.generateImage(prompt)); 
    }
}

可以看到,我们创建了一个很简单的控制器,里面只有一个GET请求端点,访问localhost:8080/image/generate就能用这个端点。

第五步:运行应用程序

要启动应用程序,在命令行执行下面这条命令:

mvn spring-boot:run

应用运行起来后,就能用curl命令测试效果啦,随便输入一个文本提示,我用的是“Cute cat playing chess”。要是在命令行调用端点,记得把空格替换成%20,命令如下:

curl -X GET \"http://localhost:8080/image/generate?prompt=Cute%20cat%20playing%20chess\"

执行命令后,等几秒,OpenAI需要点时间生成图片,生成成功就大功告成啦!使用Spring AI集成OpenAI的DALL-E 3生成图片步骤详解

第六步:让图片生成更灵活(可选)

第二步里,我们在application.yaml文件里给模型配置了默认行为。能不能让用户自己来配置呢?当然可以!这时候就要用到ImageOptions接口了。示例代码如下:

// 定义生成图片的方法,接收一个GenerateImageRequest对象作为参数
public String generateImage(GenerateImageRequest imageRequest) { 
    // 用OpenAiImageOptions的构建器来构建ImageOptions对象
    ImageOptions options = OpenAiImageOptions.builder() 
        // 设置图片质量为standard
        .withQuality(\"standard\") 
        // 设置图片风格为vivid
        .withStyle(\"vivid\") 
        // 设置图片高度为1024
        .withHeight(1024) 
        // 设置图片宽度为1024
        .withWidth(1024) 
        // 设置响应格式为url
        .withResponseFormat(\"url\") 
        // 构建ImageOptions对象
        .build(); 

    // 根据用户传入的文本提示和构建好的ImageOptions对象创建ImagePrompt对象
    ImagePrompt imagePrompt = new ImagePrompt(imageRequest.getPrompt(), options); 
    // 调用imageModel的call方法,传入ImagePrompt对象,得到图片生成的响应结果
    ImageResponse imageResponse = imageModel.call(imagePrompt); 
    // 从响应结果里获取生成图片的URL并返回
    return imageResponse.getResult().getOutput().getUrl(); 
}

实现这个功能,要按照application.yaml里的配置,用代码构建ImageOptions对象,然后在创建ImagePrompt对象的时候把这些配置传进去。要是还想了解更多配置选项,可以去Spring AI的文档里看看。

总结

Spring AI是个很棒的工具,能帮开发者轻松和各种AI模型集成。写这篇文章的时候,Spring AI支持包括Azure AI、Stability等在内的五种图片模型。希望这篇文章能帮到你,也能让你更有兴趣深入探索Spring AI。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/10243.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号