1 Star 0 Fork 1

ComfyUI/OneButtonPrompt

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
call_extras.py 3.68 KB
一键复制 编辑 原始数据 按行查看 历史
AIrjen 提交于 2023-07-08 08:36 . Hotfix for files
import os
import requests
import io
import base64
import uuid
from PIL import Image, PngImagePlugin
import time
def call_extras(imagelocation,originalimage, originalpnginfo ="", apiurl="http://127.0.0.1:7860",filename="",extrasupscaler1 = "all",extrasupscaler2 ="all",extrasupscaler2visiblity="0.5",extrasupscaler2gfpgan="0",extrasupscaler2codeformer="0.15",extrasupscaler2codeformerweight="0.1",extrasresize="2"):
#rest of prompt things
upscaling_resize = extrasresize
upscaler_1 = extrasupscaler1
upscaler_2 = extrasupscaler2
with open(imagelocation, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
encodedstring2 = encoded_string.decode('utf-8')
#params to stay the same
url = apiurl
script_dir = os.path.dirname(os.path.abspath(__file__)) # Script directory
outputextrasfolder = os.path.join(script_dir, "./automated_outputs/extras/" )
outputextrasfolder.replace("./", "/")
if(filename==""):
filename = str(uuid.uuid4())
outputextrasilename = filename
outputextraspng = '.png'
outputextrasFull = '{}{}{}'.format(outputextrasfolder,outputextrasilename,outputextraspng)
payload = {
"upscaling_resize": float(upscaling_resize),
"upscaler_1": upscaler_1,
"image": encodedstring2,
"resize_mode": 0,
"show_extras_results": "false",
"gfpgan_visibility": extrasupscaler2gfpgan ,
"codeformer_visibility": extrasupscaler2visiblity,
"codeformer_weight": extrasupscaler2codeformerweight,
"upscaling_crop": "false",
"upscaler_2": upscaler_2,
"extras_upscaler_2_visibility": extrasupscaler2visiblity,
"upscale_first": "true",
"rb_enabled": "false", # the remove backgrounds plugin is automatically turned on, need to turn it off
"models": "None" # the remove backgrounds plugin is automatically turned on, need to turn it off
}
response = []
# If we don't get an image back, we want to retry a few times. Max 3 times
for i in range(4):
response = requests.post(url=f'{url}/sdapi/v1/extra-single-image', json=payload)
r = response.json()
if("image" in r):
break # this means if we have the images object, then we "break" out of the for loop.
else:
if(i == 3):
print("If this keeps happening: Is WebUI started with --api enabled?")
print("")
raise ValueError("API has not been responding after several retries. Stopped processing.")
print("")
print("We haven't received an image from the API. Maybe something went wrong. Will retry after waiting a bit.")
time.sleep(10 * (i+1) ) # incremental waiting time
image = Image.open(io.BytesIO(base64.b64decode(response.json().get("image"))))
# when using just upscale, we somehow can't get the png info. Unless we do IMG2IMG or TXT2IMG first, then it is added.
# minor issue, so this solves it for now
#if(originalpnginfo==""):
# png_payload = {
# "image": "data:image/png;base64," + image[0]
# }
#print("and here!")
#print(png_payload)
# response2 = requests.post(url=f'{url}/sdapi/v1/png-info', json=png_payload)
#print("here!")
#print(response2)
# pnginfo = PngImagePlugin.PngInfo()
# pnginfo.add_text("parameters", response2.json().get("info"))
# originalpnginfo = pnginfo
image.save(outputextrasFull, pnginfo=originalpnginfo)
return outputextrasFull
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ComfyUI_1/OneButtonPrompt.git
git@gitee.com:ComfyUI_1/OneButtonPrompt.git
ComfyUI_1
OneButtonPrompt
OneButtonPrompt
main

搜索帮助