使用请求调用本地部署的stable-diffusion接口
stable-diffusion-webui项目地址
具体部署教程请去B站寻找或者直接使用整合包
这里直接编写工具类
public class StableDiffusionUtil {private static final String BASE_URL = "http://127.0.0.1:7860";private static final OkHttpClient CLIENT = new OkHttpClient();private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();/*** 获取可用模型列表** @return 模型列表的 JSON 字符串* @throws IOException 如果请求失败*/public static List<ModelInfo> listModels() throws IOException {Request request = new Request.Builder().url(BASE_URL + "/sdapi/v1/sd-models").get().build();try (Response response = CLIENT.newCall(request).execute()) {if (response.isSuccessful()) {String jsonResponse = response.body().string();// 将 JSON 字符串解析为 ModelInfo 对象列表return OBJECT_MAPPER.readValue(jsonResponse, new TypeReference<List<ModelInfo>>() {});} else {throw new IOException("请求失败: " + response.code());}}}/*** 生成图片并保存** @param prompt 生成图片的描述* @param negativePrompt 负面描述* @param steps 生成步骤* @param cfgScale CFG 参数* @param width 图片宽度* @param height 图片高度* @param samplerIndex 采样器* @param modelCheckpoint 模型名称* @param outputFilePath 保存图片的文件路径* @throws IOException 如果请求失败或保存图片失败*/public static byte[] generateImage(String prompt, String negativePrompt, int steps, int cfgScale,int width, int height, String samplerIndex, String modelCheckpoint) throws IOException {// 请求参数String json = "{"+ "\"prompt\": \"" + prompt + "\","+ "\"negative_prompt\": \"" + negativePrompt + "\","+ "\"steps\": " + steps + ","+ "\"cfg_scale\": " + cfgScale + ","+ "\"width\": " + width + ","+ "\"height\": " + height + ","+ "\"sampler_index\": \"" + samplerIndex + "\","+ "\"sd_model_checkpoint\": \"" + modelCheckpoint + "\""+ "}";RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));Request request = new Request.Builder().url(BASE_URL + "/sdapi/v1/txt2img").post(body).build();try (Response response = CLIENT.newCall(request).execute()) {if (response.isSuccessful()) {String jsonResponse = response.body().string();String imageBase64 = jsonResponse.split("\"images\":\\[\"")[1].split("\"")[0];// 解码 Base64 图片byte[] imageBytes = Base64.getDecoder().decode(imageBase64);ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);BufferedImage image = ImageIO.read(bis);// 将图片转换为二进制数组ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(image, "png", baos);return baos.toByteArray();} else {throw new IOException("请求失败: " + response.code());}}}/*** 切换模型** @param modelCheckpoint 模型名称* @throws IOException 如果请求失败*/public static void switchModel(String modelCheckpoint) throws IOException {// 更新模型配置String json = "{"+ "\"sd_model_checkpoint\": \"" + modelCheckpoint + "\""+ "}";RequestBody body = RequestBody.create(json, MediaType.parse("application/json; charset=utf-8"));Request request = new Request.Builder().url(BASE_URL + "/sdapi/v1/options").post(body).build();try (Response response = CLIENT.newCall(request).execute()) {if (response.isSuccessful()) {System.out.println("模型已切换到 " + modelCheckpoint);} else {throw new IOException("请求失败: " + response.code());}}}}
调用工具类实现
@Autowiredprivate SysOssService ossService;@Testvoid test8() throws Exception {String prompt = "A futuristic city with flying cars, highly detailed, 4k";String negativePrompt = "blurry, low quality, distorted, text";int steps = 30;int cfgScale = 7;int width = 512;int height = 512;String samplerIndex = "Euler a";String outputFilePath = "output.png";String modelInfo="anything-v5-PrtRE.safetensors [7f96a1a9ca]";// 调用方法生成图片byte[] imageBytes= StableDiffusionUtil.generateImage(prompt, negativePrompt, steps, cfgScale, width, height, samplerIndex, modelInfo);String fileName = "generated_image.png"; // 文件名String contentType = "image/png"; // 文件类型SysOssDTO ossDTO = ossService.upload(imageBytes, fileName, contentType);// 打印上传结果System.out.println("文件上传成功,访问路径: " + ossDTO.getUrl());}
相关文章:
使用请求调用本地部署的stable-diffusion接口
stable-diffusion-webui项目地址 具体部署教程请去B站寻找或者直接使用整合包 这里直接编写工具类 public class StableDiffusionUtil {private static final String BASE_URL "http://127.0.0.1:7860";private static final OkHttpClient CLIENT new OkHttpClien…...
封装一个分割线组件
最终样式 Vue2代码 <template><div class"sep-line"><div class"sep-label"><span class"sep-box-text"><slot>{{ title }}</slot> <!-- 默认插槽内容,如果没有传递内容则使用title -->&…...
网络HTTPS协议
Https HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 协议的加密版本,它使用 SSL/TLS 协议来加密客户端和服务器之间的通信。具体来说: • 加密通信:在用户请求访问一个 HTTPS 网站时,客户端&#x…...
CMake 函数和宏
CMake 函数 CMake 函数定义语法如下, 其中 name 为函数名, <arg1> 为参数名, <commands> 为函数体. 函数定义后, 可以通过 name 调用函数. 函数名允许字母数字下划线, 不区分大小写. function(name [<arg1> ...])<commands> endfunction()如下的样例…...
OSASIS(One-Shot Structure-Aware Stylized Image Synthesis)
文章目录 摘要abstract论文摘要方法损失函数实验结论 总结 摘要 本周阅读了一篇关于新型图像风格化的论文《One-Shot Structure-Aware Stylized Image Synthesis》,旨在解决现有GAN模型在风格化过程中难以保持输入图像结构的问题。通过分离图像的结构和语义信息&am…...
C++学习之网盘项目单例模式
目录 1.知识点概述 2.单例介绍 3.单例饿汉模式 4.饿汉模式四个版本 5.单例类的使用 6.关于token的作用和存储 7.样式表使用方法 8.qss文件中选择器介绍 9.qss文件样式讲解和测试 10.qss美化登录界面补充 11.QHTTPMULTIPART类的使用 12.文件上传协议 13.文件上传协议…...
Leetcode—15. 三数之和(哈希表—基础算法)
题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的…...
Apache Flink技术原理深入解析:任务执行流程全景图
前言 本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 思维导图 📌 引言 Apache Flink 作为一款高性能的分布式流处理引擎,其内部执行机制精妙而复杂。本文将…...
DeepBI:重构流量逻辑,助力亚马逊广告实现高效流量增长
在日益激烈的跨境电商竞争环境中,广告投放早已从“粗放撒网”走向“精细化运营”。尤其是在亚马逊这样一个成熟且竞争白热化的平台,如何在广告预算有限的前提下实现高效曝光、精准触达、稳定转化,成为众多卖家和运营团队面临的核心挑战。 De…...
RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”
嘿,亲爱的算法工程师们!今天咱们聊一聊PDF解析的那些事儿,简直就像是在玩一场“信息捉迷藏”游戏!PDF文档就像是个调皮的小精灵,表面上看起来规规矩矩,但当你想要从它那里提取信息时,它就开始跟…...
C语言【文件操作】详解中(会使用fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite函数)
引言 介绍和文件操作中文件的顺序读写相关的函数 看这篇博文前,希望您先仔细看一下这篇博文,理解一下文件指针和流的概念:C语言【文件操作】详解上-CSDN博客文章浏览阅读606次,点赞26次,收藏4次。先整体认识一下文件是…...
【Python Cookbook】字符串和文本(一)
字符串和文本(一) 1.使用多个界定符分割字符串2.字符串开头或结尾匹配3.用 Shell 通配符匹配字符串4.字符串匹配和搜索5.字符串搜索和替换 1.使用多个界定符分割字符串 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空…...
GpuGeek:破解算力难题,赋能AI创新与普及
文章目录 一、引言二、填补算力资源供需缺口,降低使用门槛三、提升算力资源利用率,推动高效协作四、满足多样化需求,支持AI技术落地五、推动算力市场创新,促进生态良性发展六、助力AI人才培养,推动行业长远发展七、结语…...
扣子平台知识库不能上传成功
扣子平台知识库不能上传成功 目录 扣子平台知识库不能上传成功查看模板复制头部到自己的excel中json数据转为excel或者csv(一定使用excel,csv总是报错) 查看模板复制头部到自己的excel中 json数据转为excel或者csv(一定使用excel&…...
蓝桥杯 R格式
问题描述 小蓝最近在研究一种浮点数的表示方法:R 格式。 对于一个大于 0 的浮点数 d,可以用 R 格式的整数来表示。 给定一个转换参数 n,将浮点数转换为 R 格式整数的做法是: 将浮点数乘以 2^n;将结果四舍五入到最接…...
计算机视觉的多模态模型
计算机视觉的多模态模型 是指能够同时处理和理解 多种类型数据(模态) 的模型。这些模态可以包括图像、文本、音频、视频、深度信息等。多模态模型的核心目标是利用不同模态之间的互补信息,提升模型的性能和泛化能力。 1. 多模态模型的核心思想…...
JVM的组成--运行时数据区
JVM的组成 1、类加载器(ClassLoader) 类加载器负责将字节码文件从文件系统中加载到JVM中,分为:加载、链接(验证、准备、解析)、和初始化三个阶段 2、运行时数据区 运行时数据区包括:程序计数…...
c++进阶之------红黑树
一、概念 红黑树(Red-Black Tree)是一种自平衡二叉查找树,它在计算机科学的许多领域中都有广泛应用,比如Java中的TreeMap和C中的set/map等数据结构的底层实现。红黑树通过在每个节点上增加一个颜色属性(红色或黑色&am…...
《鸿蒙原生应用开发:掌控Ability生命周期的艺术》
在鸿蒙原生应用开发的广袤天地中,Ability作为构建应用的基本单元,其生命周期的有效管理宛如基石之于高楼,是打造稳定、高效且用户体验卓越应用的关键所在。随着鸿蒙生态的蓬勃发展,深入理解并巧妙运用Ability生命周期,…...
ubuntu22.04安装搜狗输入法保姆教程~
一、添加中文语言支持 1.首先打开设置,找到Language and Region 2.点击Manage Installed Languages 3.点击 Install/Remove Languages... 4.选中Chinese (simplified),点击Apply...
《数据库原理》SQLServer期末复习_题型+考点
目录 题型: 一. 概况分析题(5小题,每小题2分,共10分) 二. 计算题(3小题,每小题5分,共15分) 三. 数据库设计(2小题,每小题10分,共2…...
Zstd(Zstandard)压缩算法
要压缩的数据量越小,压缩的难度就越大。这个问题对所有压缩算法都是通用的,原因是压缩算法从过去的数据中学习如何压缩未来的数据。但是,在新数据集开始时,没有“过去”可以构建。 官网 为了解决这种情况,Zstd 提供了一…...
烧结银技术赋能新能源汽车超级快充与高效驱动
烧结银技术赋能新能源汽车超级快充与高效驱动 在新能源汽车领域,高压快充技术的突破与高功率密度驱动系统的创新正成为行业竞争的焦点。比亚迪于 2025 年发布的超级 e 平台,通过整合全域千伏高压架构、兆瓦级闪充技术及碳化硅(SiC࿰…...
本地部署 browser-use
本地部署 browser-use 0. 引言1. 核心功能与优势2. 快速上手3. 部署 Gradio UI4. 更多示例0. 引言 Browser-Use 是一个强大的工具,旨在让 AI Agent 能够控制浏览器,从而实现各种自动化任务。它简化了 AI 与浏览器的交互,让开发者能够轻松构建能够执行网页操作的智能应用。本…...
笔记:代码随想录算法训练营day59:110.字符串接龙 、105.有向图的完全可达性、106.岛屿的周长
学习资料:代码随想录 110. 字符串接龙 卡码网题目链接(ACM模式) 还是有些许复杂,要把字符串从begin开始遍历,然后把每一个字母都换一下,看能否在字典里找到,如果能找到就入队列并记录&#x…...
电力和冷却管理:如何让数据中心“高效降温”同时节能增效
电力和冷却管理:如何让数据中心“高效降温”同时节能增效 数据中心作为现代信息技术基础设施的核心,承担着处理、存储和传输海量数据的重任。然而,这些庞大的服务器和存储设备在高速运转时,不仅需要大量电力供应,还产生了大量热量。如何平衡电力消耗与有效冷却,成为了数…...
Vite管理的Vue3项目中monaco editer的使用以及组件封装
文章目录 背景环境说明安装流程以及组件封装引入依赖封装组件 外部使用实现效果 v-model实现原理 背景 做oj系统的时候,需要使用代码编辑器,决定使用Monaco Editor,但是因为自身能力问题,读不懂官网文档,最终结合ai和网友的帖子成功引入&…...
查找重复代码[A卷-hw_od]
题目描述 小明负责维护项目下的代码,需要查找出重复代码,用以支撑后续的代码优化,请你帮助小明找出重复的代码。 重复代码查找方法:以字符串形式给定两行代码(字符串长度 1 < length < 100,由英文字…...
HAl库开发中断方式接收Can报文的详细流程
下面给出一个基于 HAL 库的中断方式接收 CAN 报文的详细流程说明,描述每一步的硬件配置、软件调用和中断处理机制,而不涉及具体代码细节,只讲解整体原理和步骤: 在使用 HAL 库时,不需要手动清除中断标志位。原因如下&…...
[笔记] TinyWebServer编译及demo运行过程
文章目录 前言环境搭建ubuntumysql 8.0c/c开启root用户TinyWebServer 搭建及编译过程运行结果常见问题./threadpool/../CGImysql/sql_connection_pool.h:6:10: fatal error: mysql/mysql.h: No such file or directory./server运行后直接退出了 前言 哎 也就帮帮新手看看问题 …...
