import os from typing import Any import json class ImageRequest: def __init__(self): self.ratio = 1 self.configScale = 0 self.guidance_scale = 7.5 self.seed = 52125 self.prompt = "" self.negative_prompt = "" self.neg_prompt = "" self.num_images_per_prompt = 1 self.imagesToGenerate = 1 self.num_frames = 1 self.size = [1920, 1080] self.encodeSize = [1024, 576] self.steps = 6 self.faceFix = 1 self.width = 1920 self.height = 1080 self.maxSize = 1080 self.resolution = 256 self.topOffset = 0 self.altitude = 0 self.distance = 0 self.fov = 0 self.fovx = 0 self.fovy = 0 self.range = [0,1] self.range2 = [0,1] self.topOffset = 0 self.version = "1.3" self.upscale = 2 self.bg_upsampler = "realesrgan" self.chunkSize = 8192 self.bg_tile = 400 self.suffix = "None" self.only_center_face = False self.aligned = False self.ext = "auto" self.foregroundRatio = 1.0 self.weight = 0.75 self.s_scale = 0.75 self.scale = 0.75 self.encodedFps = 8 self.fps = 24 self.loops = 0 self.maskIndex = 0 self.removeBg = False self.isXL = False self.isXLLightning = False self.maskIndex = False self.watermarked = False self.exportGif = False self.exportTextures = False self.exportMeshes = False self.exportFiles = False self.exportOther = False self.export = False self.saveFaceEmbeddings = False self.overrideForm = "False" self.submode = "default" self.mode = "default" self.model = "default" self.modelType = "default" self.ipAdapterModel = "" self.onnxModel = "" self.inpaintModel = "" self.controlnetModel = "" self.vaeRepo = "" self.schedueler = "" self.device = "" self.tempPath = "" self.paramsData = "" self.exportSize = "" self.faceEmbeddings = "" self.input = "" self.mask = "" self.inputs = [] self.masks = [] self.mediaPaths = [] self.urls = [] self.styleImages = [] self.vertecies = [] self.points = [] self.primitives = [] self.meshes = [] self.objects = [] self.output = "" self.customSDBinWeights = "" self.textualInversionWeights = "" self.refinerRepo = "" self.metadata = "" self.url = "" self.shareuser = "" self.user = "" self.ipAdapters = [] self.loras = [] def DetectSizeFromSize(self): if isinstance(self.size, str): split = self.size.split(",") width = int(split[0]) height = int(split[1]) self.ratio = float(width) / float(height) self.size = [width, height] self.width = width self.height = height def DetectEncodeSize(self): if isinstance(self.encodeSize, str): split = self.encodeSize.split(" ") sizeSplit = split[1].lower().split("x") width = int(sizeSplit[0]) height = int(sizeSplit[1]) self.encodeSize = [width, height] def DetectSizeFromExportSize(self): split = self.exportSize.split(" ") ratio = split[0] sizeSplit = split[1].lower().split("x") width = int(sizeSplit[0]) height = int(sizeSplit[1]) self.ratio = float(width) / float(height) self.size = [width, height] self.width = width self.height = height def DetectXL(self): self.isXL = "XL" in self.model or "xl" in self.model if self.isXL: self.isXLLightning = "lightning" in self.model or "Lightning" in self.model def JSON(self): return json.dumps(self.__dict__) def SetOutputExtension(self, extension = "png"): root, ext = os.path.splitext(self.output) if not ext: ext = f'.{extension}' self.output = root + ext def CreateResponse(self, outputFiles = [], objectType = "image", isBase64 = False): outputDict = {"media":[]} for file in outputFiles: outputDict["media"].append({"media":file,"prompt": self.prompt, "seed": self.seed, "objectType": objectType, "isBase64": isBase64}) outputDict["media"].append({"media":self.input,"prompt": self.prompt, "seed": self.seed, "objectType": objectType, "isBase64": True}) return outputDict @staticmethod def FromDict(obj: Any) -> 'ImageRequest': imgRequest = ImageRequest() try: imgRequest.chunkSize = int(obj["chunkSize"]) except: pass try: imgRequest.steps = int(obj["steps"]) except: pass try: imgRequest.weight =float( obj["weight"]) except: pass try: imgRequest.ratio = float(obj["ratio"]) except: pass try: imgRequest.s_scale = float(obj["s_scale"]) except: pass try: imgRequest.scale = float(obj["scale"]) except: pass try: imgRequest.configScale = float(obj["configScale"]) imgRequest.guidance_scale = float(obj["configScale"]) except: pass try: imgRequest.guidance_scale = float(obj["guidance_scale"]) imgRequest.configScale = float(obj["guidance_scale"]) except: pass try: imgRequest.seed = int(obj["seed"]) except: pass try: imgRequest.exportTextures = bool(obj["exportTextures"]) except: pass try: imgRequest.exportOther = bool(obj["exportOther"]) except: pass try: imgRequest.export = bool(obj["export"]) except: pass try: imgRequest.exportFiles = bool(obj["exportFiles"]) except: pass try: imgRequest.vertecies = obj["vertecies"] except: pass try: imgRequest.points = obj["points"] except: pass try: imgRequest.objects = obj["objects"] except: pass try: imgRequest.meshes = obj["meshes"] except: pass try: imgRequest.primitives = obj["primitives"] except: pass try: imgRequest.exportMeshes = bool(obj["exportMeshes"]) except: pass try: imgRequest.faceEmbeddings = obj["faceEmbeddings"] except: pass try: imgRequest.encodeSize = obj["encodeSize"] imgRequest.DetectEncodeSize() except: pass try: imgRequest.removeBg = int(obj["removeBg"]) except: pass try: imgRequest.ipAdapterModel = obj["ipAdapterModel"] except: pass try: imgRequest.topOffset = int(obj["topOffset"]) except: pass try: imgRequest.foregroundRatio = float(obj["foregroundRatio"]) except: pass try: imgRequest.resolution = int(obj["resolution"]) except: pass try: imgRequest.maxSize = int(obj["maxSize"]) except: pass try: imgRequest.prompt = obj["prompt"] except: pass try: imgRequest.negative_prompt = obj["negative_prompt"] except: pass try: imgRequest.negative_prompt = obj["neg_prompt"] imgRequest.neg_prompt = obj["neg_prompt"] except: pass try: imgRequest.negative_prompt = obj["negative_prompt"] imgRequest.neg_prompt = obj["negative_prompt"] except: pass try: imgRequest.num_images_per_prompt = int(obj["num_images_per_prompt"]) imgRequest.imagesToGenerate = int(obj["num_images_per_prompt"]) except: pass try: imgRequest.num_images_per_prompt = int(obj["imagesToGenerate"]) imgRequest.imagesToGenerate = int(obj["imagesToGenerate"]) imgRequest.num_frames = int(obj["imagesToGenerate"]) except: pass try: imgRequest.num_images_per_prompt = int(obj["num_frames"]) imgRequest.imagesToGenerate = int(obj["num_frames"]) imgRequest.num_frames = int(obj["num_frames"]) except: pass try: imgRequest.size = obj["size"] except: pass try: imgRequest.faceFix = int(obj["faceFix"]) except: pass try: imgRequest.version = str(obj["version"]) except: pass try: imgRequest.weight =float( obj["facefixweight"]) except: pass try: imgRequest.upscale =int( obj["facefixupscale"]) except: pass try: imgRequest.upscale = int(obj["upscale"]) except: pass try: imgRequest.bg_upsampler = str(obj["bg_upsampler"]) except: pass try: imgRequest.bg_tile = int(obj["bg_tile"]) except: pass try: imgRequest.loops = int(obj["loops"]) except: pass try: imgRequest.suffix = int(obj["suffix"]) except: pass try: imgRequest.only_center_face = bool(obj["only_center_face"]) except: pass try: imgRequest.exportGif =bool( obj["exportGif"]) except: pass try: imgRequest.saveFaceEmbeddings =bool( obj["saveFaceEmbeddings"]) except: pass try: imgRequest.aligned =bool( obj["aligned"]) except: pass try: imgRequest.ext = str(obj["ext"]) except: pass try: imgRequest.submode = obj["submode"] except: pass try: imgRequest.mode = obj["mode"] except: pass try: imgRequest.model = obj["model"] except: pass try: imgRequest.modelType = obj["modelType"] except: pass try: imgRequest.onnxModel = obj["onnxModel"] except: pass try: imgRequest.inpaintModel = obj["inpaintModel"] except: pass try: imgRequest.controlnetModel = obj["controlnetModel"] except: pass try: imgRequest.vaeRepo = obj["vaeRepo"] except: pass try: imgRequest.altitude = float(obj["altitude"]) except: pass try: imgRequest.distance = float(obj["distance"]) except: pass try: imgRequest.fov = float(obj["fov"]) except: pass try: imgRequest.fovc = float(obj["fovc"]) except: pass try: imgRequest.fovy = float(obj["fovy"]) except: pass try: imgRequest.range = obj["range"] except: pass try: imgRequest.range2 = obj["range2"] except: pass try: imgRequest.schedueler = obj["schedueler"] except: pass try: imgRequest.device = obj["device"] except: pass try: imgRequest.tempPath = obj["tempPath"] except: pass try: imgRequest.paramsData = obj["paramsData"] except: pass try: imgRequest.exportSize = obj["exportSize"] except: pass try: imgRequest.input = obj["input"] except: pass try: import flask import base64 inputImage = flask.request.files['inputImage'] image_string = base64.b64encode(inputImage.read()) imgRequest.input = image_string except: pass try: import flask import base64 inputImage = flask.request.files['input'] image_string = base64.b64encode(inputImage.read()) imgRequest.input = image_string except: pass try: import base64 inputs = obj["inputs"] for inputImage in inputs: imgRequest.inputs.append(image_string) except: pass try: import flask import base64 inputs = flask.request.files['inputs'] for inputImage in inputs: image_string = base64.b64encode(inputImage.read()) imgRequest.inputs.append(image_string) except: pass try: import flask import base64 inputs = flask.request.files['masks'] for inputImage in inputs: image_string = base64.b64encode(inputImage.read()) imgRequest.masks.append(image_string) except: pass try: import flask import base64 inputs = flask.request.files['styleImages'] for inputImage in inputs: image_string = base64.b64encode(inputImage.read()) imgRequest.styleImages.append(image_string) except: pass try: import flask import pickle import base64 inputs = flask.request.files['faceEmbeddings'] for inputImage in inputs: loaded = pickle.loads(inputImage.read()) imgRequest.faceEmbeddings.append(loaded) except: pass try: imgRequest.mask = obj["mask"] except: pass try: imgRequest.masks = obj["masks"] except: pass try: imgRequest.mediaPaths = obj["mediaPaths"] except: pass try: imgRequest.urls = obj["urls"] except: pass try: imgRequest.styleImages = obj["styleImages"] except: pass try: imgRequest.output = obj["output"] except: pass try: imgRequest.customSDBinWeights = obj["customSDBinWeights"] except: pass try: imgRequest.textualInversionWeights = obj["textualInversionWeights"] except: pass try: imgRequest.refinerRepo = obj["refinerRepo"] except: pass try: imgRequest.metadata = obj["metadata"] except: pass try: imgRequest.url = obj["url"] except: pass try: imgRequest.shareuser = obj["shareuser"] except: pass try: imgRequest.user = obj["user"] except: pass try: imgRequest.ipAdapters = obj["ipAdapters"] except: pass try: imgRequest.loras = obj["loras"] except: pass try: imgRequest.maskIndex = int(obj["maskIndex"]) except: pass try: imgRequest.watermarked = bool(obj["watermarked"]) except: pass try: imgRequest.overrideForm = obj["overrideForm"] except: pass try: imgRequest.isXL = bool(obj["isXL"]) except: pass try: imgRequest.isXLLightning = bool(obj["isXLLightning"]) except: pass try: imgRequest.width = int(obj["width"]) except: pass try: imgRequest.height = int(obj["height"]) except: pass try: imgRequest.fps = float(obj["fps"]) except: pass try: imgRequest.encodedFps = float(obj["encodedFps"]) except: pass if imgRequest.isXL == False: imgRequest.DetectXL() return imgRequest # Example Usage # jsonstring = json.loads(myjsonstring) # root = Root.from_dict(jsonstring)