继续来学习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/models/spring-ai-zhipuai at aa590e839de2a8edc01f3c7cbdcf6a2a8ba57401 · spring-projects/spring-ai

spring-ai 学习系列(6)-文生图的更多相关文章

  1. Caffe学习系列(22):caffe图形化操作工具digits运行实例

    上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的” Images" ...

  2. Caffe学习系列(21):caffe图形化操作工具digits的安装与运行

    经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...

  3. Spring Boot 学习系列(10)—SpringBoot+JSP的使

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...

  4. Spring Boot 学习系列(05)—自定义视图解析规则

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...

  5. Spring Boot 学习系列(03)—jar or war,做出你的选择

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的 ...

  6. Spring Boot 学习系列(序)—Spring Boot

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架 ...

  7. Spring Boot 学习系列(06)—采用log4j2记录日志

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支 ...

  8. Spring Boot 学习系列(09)—自定义Bean的顺序加载

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...

  9. Spring Boot 学习系列(08)—自定义servlet、filter及listener

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...

  10. Spring Boot 学习系列(07)—properties文件读取

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...

随机推荐

  1. 牛!达摩院孵化开源项目,让数字人"活"起来:OpenAvatarChat教你轻松搭建自己的数字人

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "只需一台普通电脑,就能让数字人像真人一样与你畅聊!" -- OpenA ...

  2. 【代码】C语言|保留小数点后n位并四舍五入,便于处理运算和存储不善的浮点数

    前言 有个人跟我说浮点数运算起来非常麻烦,总是算着算着丢失精度,导致计算结果取int的时候取不准.毕竟系统也没有自动根据这个数的精度四舍五入的功能. 比如int(2.999999999999999)= ...

  3. P1514 [NOIP 2010 提高组] 引水入城 题解

    题意:P1514 [NOIP 2010 提高组] 引水入城有点复杂,自己看吧. 思路 这里提供一个好像没见过的纯 DP 做法,不需要神秘的证明以及任何脑子,直接顺着思路做即可. 首先判断正确性就是从第 ...

  4. WindowsPE文件格式入门02.选项头其它和节表

    https://www.bpsend.net/thread-444-1-1.html 选项头 IMAGE_OPTIONAL_HEADER:以供操作系统加载PE文件使用,32位必选. 重要字段: DWO ...

  5. 题解:P3388 【模板】割点(割顶)

    提示:本篇题解缺乏详细的证明,如有需要,请移步其他题解. 算法介绍 Tarjan 算法,这里用来解决割点问题,时间复杂度为 \(O(n+m)\). 割点的简要定义是:去掉割点及其所连的边,该图分为两个 ...

  6. win10 hyper-v 配置教程

    非家庭版跳过以下这一步. pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt ...

  7. 「ABC 406 G」Travelling Salesman Problem

    「ABC 406 G」Travelling Salesman Problem 前言 本题笔者使用了两种方法来做,一是 \(\text{Slope trick}\) ,二是线段树,皆有讲解,各位读者按需 ...

  8. 强化PHP安全策略,有效防范网络钓鱼威胁

    本文由 ChatMoney团队出品 随着互联网的飞速发展,网络钓鱼攻击已成为网络安全领域的重要威胁之一.网络钓鱼攻击通过伪装成合法网站或企业,诱骗用户进入虚假网站并窃取用户的个人信息.密码等敏感信息. ...

  9. Maven 打包时,提示 java: 程序包com.sun.xml.internal.ws.fault 不存在 和 javax.crypto 不存在

    报错原因: Maven 打包时,不会导入 JDK 内部的依赖( JDK 属于部署的环境,不属于外部的三方依赖: 解决办法: 在pom.xml 文件中,添加如下 plugin 插件: <plugi ...

  10. USB Gadget设备软插拔异常的处理方法

    技术背景 我们的板子作为 USB Gadget 设备通过 USB 线接入 USB 主机使用,我们的板子被主机识别为一个 Compsite Device,这个 Compsite Device 是由我们板 ...