|
import os |
|
import sys |
|
import cv2 |
|
from base64 import b64encode |
|
from pathlib import Path |
|
|
|
import requests |
|
|
|
BASE_URL = "http://localhost:7860" |
|
|
|
|
|
|
|
os.environ['IGNORE_CMD_ARGS_ERRORS'] = 'True' |
|
|
|
file_path = Path(__file__).resolve() |
|
ext_root = file_path.parent.parent |
|
a1111_root = ext_root.parent.parent |
|
|
|
for p in (ext_root, a1111_root): |
|
if p not in sys.path: |
|
sys.path.append(str(p)) |
|
|
|
|
|
from modules import initialize |
|
initialize.imports() |
|
initialize.initialize() |
|
|
|
from scripts.enums import StableDiffusionVersion |
|
|
|
def readImage(path): |
|
img = cv2.imread(path) |
|
retval, buffer = cv2.imencode('.jpg', img) |
|
b64img = b64encode(buffer).decode("utf-8") |
|
return b64img |
|
|
|
|
|
def get_model(model_name: str, sd_version: StableDiffusionVersion = StableDiffusionVersion.SD1x) -> str: |
|
""" Find an available model with specified model name and sd_version. """ |
|
if model_name.lower() == "none": |
|
return "None" |
|
|
|
r = requests.get(BASE_URL+"/controlnet/model_list") |
|
result = r.json() |
|
if "model_list" not in result: |
|
raise ValueError("No model available") |
|
|
|
candidates = [ |
|
model |
|
for model in result["model_list"] |
|
if ( |
|
model_name.lower() in model.lower() and |
|
StableDiffusionVersion.detect_from_model_name(model) == sd_version |
|
) |
|
] |
|
|
|
if not candidates: |
|
raise ValueError("No suitable model available") |
|
|
|
return candidates[0] |
|
|
|
|
|
def get_modules(): |
|
return requests.get(f"{BASE_URL}/controlnet/module_list").json() |
|
|
|
|
|
def detect(json): |
|
return requests.post(BASE_URL+"/controlnet/detect", json=json) |
|
|