spring-ai 学习系列(6)-文生图
继续来学习spring-ai如何实现“文生图”
一、pom依赖

1 <dependency>
2 <groupId>org.springframework.ai</groupId>
3 <artifactId>spring-ai-starter-model-zhipuai</artifactId>
4 <version>1.0.0</version>
5 </dependency>
spring-ai支持多种文生图的模型,这里我们使用国产的智谱大模型,可以先免费体验 ,api-key申请地址:https://bigmodel.cn/usercenter/proj-mgmt/apikeys

二、yaml配置
spring:
ai:
zhipuai:
api-key: ${zhipuai_api_key}
这里api-key换成真实的key
三、文生图代码
@GetMapping("/image/url")
public String genImageUrl(@RequestParam String prompt) {
var options = ImageOptionsBuilder.builder().height(256).width(256).build();
ImageResponse response = zhiPuAiImageModel.call(
new ImagePrompt(prompt,
options));
Image output = response.getResult().getOutput();
return output.getUrl();
}
@GetMapping("/image/display")
public ResponseEntity<ByteArrayResource> displayImage(@RequestParam String prompt) {
try {
var options = ImageOptionsBuilder.builder().height(256).width(256).build();
ImageResponse response = zhiPuAiImageModel.call(
new ImagePrompt(prompt, options));
Image output = response.getResult().getOutput();
// 获取图片URL
String imageUrl = output.getUrl();
// 下载图片数据
URL url = URI.create(imageUrl).toURL();
byte[] imageData = url.openStream().readAllBytes();
// 创建ByteArrayResource
ByteArrayResource resource = new ByteArrayResource(imageData);
// 设置响应头 - 直接在浏览器中显示
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
return ResponseEntity.ok()
.headers(headers)
.body(resource);
} catch (IOException e) {
return ResponseEntity.internalServerError().build();
}
}
运行效果:


文中代码:yjmyzz/spring-ai-sample at day05
参考:
https://docs.spring.io/spring-ai/reference/api/imageclient.html
spring-ai 学习系列(6)-文生图的更多相关文章
- Caffe学习系列(22):caffe图形化操作工具digits运行实例
上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的” Images" ...
- Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...
- Spring Boot 学习系列(10)—SpringBoot+JSP的使
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...
- Spring Boot 学习系列(05)—自定义视图解析规则
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...
- Spring Boot 学习系列(03)—jar or war,做出你的选择
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的 ...
- Spring Boot 学习系列(序)—Spring Boot
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架 ...
- Spring Boot 学习系列(06)—采用log4j2记录日志
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支 ...
- Spring Boot 学习系列(09)—自定义Bean的顺序加载
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...
- Spring Boot 学习系列(08)—自定义servlet、filter及listener
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...
- Spring Boot 学习系列(07)—properties文件读取
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...
随机推荐
- 牛!达摩院孵化开源项目,让数字人"活"起来:OpenAvatarChat教你轻松搭建自己的数字人
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "只需一台普通电脑,就能让数字人像真人一样与你畅聊!" -- OpenA ...
- 【代码】C语言|保留小数点后n位并四舍五入,便于处理运算和存储不善的浮点数
前言 有个人跟我说浮点数运算起来非常麻烦,总是算着算着丢失精度,导致计算结果取int的时候取不准.毕竟系统也没有自动根据这个数的精度四舍五入的功能. 比如int(2.999999999999999)= ...
- P1514 [NOIP 2010 提高组] 引水入城 题解
题意:P1514 [NOIP 2010 提高组] 引水入城有点复杂,自己看吧. 思路 这里提供一个好像没见过的纯 DP 做法,不需要神秘的证明以及任何脑子,直接顺着思路做即可. 首先判断正确性就是从第 ...
- WindowsPE文件格式入门02.选项头其它和节表
https://www.bpsend.net/thread-444-1-1.html 选项头 IMAGE_OPTIONAL_HEADER:以供操作系统加载PE文件使用,32位必选. 重要字段: DWO ...
- 题解:P3388 【模板】割点(割顶)
提示:本篇题解缺乏详细的证明,如有需要,请移步其他题解. 算法介绍 Tarjan 算法,这里用来解决割点问题,时间复杂度为 \(O(n+m)\). 割点的简要定义是:去掉割点及其所连的边,该图分为两个 ...
- win10 hyper-v 配置教程
非家庭版跳过以下这一步. pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt ...
- 「ABC 406 G」Travelling Salesman Problem
「ABC 406 G」Travelling Salesman Problem 前言 本题笔者使用了两种方法来做,一是 \(\text{Slope trick}\) ,二是线段树,皆有讲解,各位读者按需 ...
- 强化PHP安全策略,有效防范网络钓鱼威胁
本文由 ChatMoney团队出品 随着互联网的飞速发展,网络钓鱼攻击已成为网络安全领域的重要威胁之一.网络钓鱼攻击通过伪装成合法网站或企业,诱骗用户进入虚假网站并窃取用户的个人信息.密码等敏感信息. ...
- Maven 打包时,提示 java: 程序包com.sun.xml.internal.ws.fault 不存在 和 javax.crypto 不存在
报错原因: Maven 打包时,不会导入 JDK 内部的依赖( JDK 属于部署的环境,不属于外部的三方依赖: 解决办法: 在pom.xml 文件中,添加如下 plugin 插件: <plugi ...
- USB Gadget设备软插拔异常的处理方法
技术背景 我们的板子作为 USB Gadget 设备通过 USB 线接入 USB 主机使用,我们的板子被主机识别为一个 Compsite Device,这个 Compsite Device 是由我们板 ...