从求一个能把群友发送的图片保存到本地目录的插件继续讨论:
如题,目前,sdwebui虽然能将webui内生成的图片自动保存至output,但是经过api调用并生成的图在本地是没有任何保存的。
我使用的koishi插件是novelAI,我不知道相关框架和插件是如何上传和保存图片的,如果是原图,图片名字得以保存而不是一串乱码,我还有个好想法:
sdwebui可以设定输出图片的名字,我们可以将输出的图片名字改成xxx_数字(假设他叫koishi,_后面的数字是编号,好像weiui会自己加),当插件检测到这样的图片名字时,就自动保存一份在本地。
众所周知,qq群有一个10g的群文件空间,我们还可以将输出的图片,以图片或文件或压缩包或转发多条信息的的形式上传至群,甚至根据不同的图片名上传到不同的群实现分类,实现在线的保存,连本地都不用了。
以这样的一个插件为基础,可能可以做到很多事,小到简单的保存图片,保存闪照,koishi日志图片形式查看,大到简易图片收集表,通过ocr管理pcr出刀等等都可能做到()
*纯开脑洞,非开发者也不知道开发难度,要是实现难度巨大,轻喷(((
1 个赞
sdwebui的api是支持将生成的图本地保存的,只要在post中加入
save_images: true,
即可,例如
输出文件格式和名称是遵循webui的设定的,可以在gui中修改。
2 个赞
这个选项不会保存来自koishi novelAI插件的api请求。
也就是说,这个选项只会保存webui的图,不会保存api请求的图片,至少我不知道在哪里
1 个赞
可是这个就是webui的api请求才有的键值啊?也就是你需要开了–api之后才能支持这个键值,网页版webui是不支持这个参数的。不管是什么插件,只要是调用的sdwebui的api,都支持这个键值。
保存位置就是网页版设定的保存路径,默认是stable-diffusion-webui\outputs\txt2img-images和stable-diffusion-webui\outputs\img2img-images下,如果你用网页版改过保存的位置,那就是你改过之后的位置。
我不太清楚你用的是Koishi的哪个插件,我只是说如果你想要实现这个功能,可以这样修改插件的post请求的键值。我这个回复的意思,一是如果自己改要怎么改,二是如果你要给插件的作者提一个issue,可以参考这个信息,三是如果有大佬想做,说不定也能提供一个思路,等等。
1 个赞
这个选项不能保存图吗?我记得所有生成的图都会保存吧,还是后面改了
这是键值啊原来,原谅我没有审题,我以为是webui的config。
我使用的插件在koishi市场就叫NovelAi,没有其他字符,在没有任何干预的情况下,确实是不会保存的。
说起来,这个插件有个-o,output选项,或许可能是这个,我去研究下。
十分感谢你的耐心回复
1 个赞
目前 novelai 插件还没有保存功能,因为一般这个需求都已经由 sd-webui 侧满足了
如果你确信你的 sd 无法保存 novelai 插件请求的图片的话,可以前往这个 issue 进行反馈
不客气 我看了一下,你提到的这个插件的POST里的确没有请求webui API保存图像,-o参数也不是起这个作用的,要保存图像的话需要对源码进行修改
webui api的这个键值好像是最近才加上去的,现在默认是false(不保存),以前通过api请求的图像都不会在本地保存,应该有个request之后加了这个功能。网页版的参数应该不是叫这个名字?
2 个赞
我认为这个改动是 极坏的。 sd-webui 作为 server,是否保存图片到服务器本地 永远不应该 由接口调用方进行控制。
此选项一旦开放意味着所有使用 sd-webui 作为接口提供方的用户都需要给自己的 sd-webui 打上补丁过滤此参数,否则服务器空间可以在没有任何报错的情况下被静默占满。尤其是云服务器环境下,以 1024*1024 step1 batch 10 仅需要数分钟即可填满服务器造成宕机。
4 个赞
所以我一开始以为他是UIconfig而没想到是一个api键值,事实上这应该是一个很容易就能想出来的问题。
也许开发者认为sdwenui是面向更多普通人的(?)
不过,webui默认是不开启api的,并且api的调用无论在哪种个人使用环境下都是自己可控的。你这个情况仅出现在以sdwebui为基础面向社会提供图片服务的服务商上,对个人影响甚微
1 个赞
是的,非常同意大佬观点。webui的api中有很多对于服务器来说是危险的实现,而且相当一部分都是automatic1111本人提交的,小的比如可以通过api键值看到服务器端文件的绝对路径、远程训练极大数量的样本、高频提交切换checkpoint指令等,不仅会恶意阻塞队列,还会影响服务器整体i/o负荷甚至损坏存储。把webui作为开放服务后端风险非常大。automatic1111本人处于ai商业or开源的风口浪尖上,也不知道他的想法。
2 个赞
的确如此,webui的更新速度很快,但是总能偶尔有些奇怪的更新。
如此看来,NovelAI插件如果要做图片保存应该从插件配置中选择是否保存而不是让其他人在使用bot的时候选择是否保存。
emmm,复杂起来了
2 个赞
其他的路由如果有风险是可以不开放的,一般这种服务都是放在反向代理后方进行选择性转发的,所以问题不大。
图转图和文转图这两个核心功能有新增的风险性变更,却没有作为 V2 接口进行发布,我认为这是不合适的,会有很多人踩坑。
原有的接口风险是有限的,例如超大图炸显存,超长迭代卡队列,或者大量请求攻击等。这些都是提供绘图能力所必须的资源和选项(虽然我也希望它给一个更为方便的限制方案),需要使用反向代理进行参数过滤,但都限制在算力范围。这次为了一个各种方案都能简单实现的保存图片,改动核心功能的 api,还用的是如此反直觉,且与现有配置逻辑不一致的调用方法实现…
总结这次的接口改动引入了额外的风险,且性价比过低,配置逻辑混乱,完全不像经过思考后实现的行为…
2 个赞
我想做一下这个操作,但耐烦技术有限,能详细说一下位置吗
1 个赞
Alirea
17
这个是开发者解决方案,不是用户的
其指导开发者修改api申请设定,要修改源码,不算是当前问题的解决方案哟
1 个赞
Alirea
19
我听说sd-swtich(好像打错了)这个插件似乎可以做到,你可以去试试
1 个赞