diff --git a/clientlibs/utils.js b/clientlibs/utils.js index b0fdcbe..97cfc8e 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -812,6 +812,7 @@ function useParameterToggleHandler(node) { "useCFGScale": ["cfgScale"], // Image inference uses lowercase cfgScale "useScheduler": ["scheduler"], "useClipSkip": ["clipSkip"], + "useUpscaleFactor": ["upscaleFactor"], // Video Inference "useCustomDimensions": ["width", "height"], // Note: Also handled separately in videoInferenceDimensionsHandler @@ -2520,6 +2521,8 @@ function imageInferenceToggleHandler(imageInferenceNode) { const maskMarginValueWidget = imageInferenceNode.widgets.find(w => w.name === "maskMargin"); const useResolutionWidget = imageInferenceNode.widgets.find(w => w.name === "useResolution"); const resolutionWidget = imageInferenceNode.widgets.find(w => w.name === "resolution"); + const useUpscaleFactorWidget = imageInferenceNode.widgets.find(w => w.name === "useUpscaleFactor"); + const upscaleFactorWidget = imageInferenceNode.widgets.find(w => w.name === "upscaleFactor"); const dimensionsWidget = imageInferenceNode.widgets.find(w => w.name === "dimensions"); const widthWidget = imageInferenceNode.widgets.find(w => w.name === "width"); const heightWidget = imageInferenceNode.widgets.find(w => w.name === "height"); @@ -2600,6 +2603,10 @@ function imageInferenceToggleHandler(imageInferenceNode) { if (useResolutionWidget && resolutionWidget) { toggleWidgetState(useResolutionWidget, resolutionWidget, "resolution"); } + + if (useUpscaleFactorWidget && upscaleFactorWidget) { + toggleWidgetState(useUpscaleFactorWidget, upscaleFactorWidget, "upscaleFactor"); + } // Handle Dimensions - disable width/height when dimensions is "None" if (dimensionsWidget && widthWidget && heightWidget) { diff --git a/modules/imageInference.py b/modules/imageInference.py index 7678954..6871dcb 100644 --- a/modules/imageInference.py +++ b/modules/imageInference.py @@ -150,6 +150,14 @@ def INPUT_TYPES(cls): "max": 100, "step": 1, }), + "useUpscaleFactor": ("BOOLEAN", { + "tooltip": "Enable to include upscaleFactor parameter in API request.", + "default": False, + }), + "upscaleFactor": ([1, 2, 4], { + "tooltip": "Upscale the initially generated image by the given factor. Supported values: 1, 2, or 4.", + "default": 2, + }), }, "optional": { @@ -272,6 +280,8 @@ def generateImage(self, **kwargs): acceleration = kwargs.get("acceleration", "none") useResolution = kwargs.get("useResolution", False) resolution = kwargs.get("resolution", "1k") + useUpscaleFactor = kwargs.get("useUpscaleFactor", False) + upscaleFactor = kwargs.get("upscaleFactor", 2) if (maskImage is not None and seedImage is None): raise Exception("Mask Image Requires Seed Image To Be Provided!") @@ -335,6 +345,12 @@ def generateImage(self, **kwargs): # Add resolution if enabled if useResolution: genConfig[0]["resolution"] = resolution + + if useUpscaleFactor: + upscaleFactor = int(upscaleFactor) + if upscaleFactor not in (1, 2, 4): + raise ValueError("upscaleFactor must be 1, 2, or 4 when useUpscaleFactor is enabled.") + genConfig[0]["upscaleFactor"] = upscaleFactor if (runwareLora is not None): if (isinstance(runwareLora, list)): diff --git a/workflows/Runware_Image_Inference_Ideogram_v3_upscale_factor.json b/workflows/Runware_Image_Inference_Ideogram_v3_upscale_factor.json new file mode 100644 index 0000000..4654759 --- /dev/null +++ b/workflows/Runware_Image_Inference_Ideogram_v3_upscale_factor.json @@ -0,0 +1 @@ +{"id":"78d075b9-8e7c-48cf-b664-df7d341a2759","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Save Image","pos":[538.8070781405743,508.88283677598844],"size":[270,317.99999999999994],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Images","name":"Images","type":"STRING","widget":{"name":"Images"},"link":2},{"localized_name":"filenamePrefix","name":"filenamePrefix","type":"STRING","widget":{"name":"filenamePrefix"},"link":null},{"localized_name":"saveImage","name":"saveImage","type":"BOOLEAN","widget":{"name":"saveImage"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"bfd4af111111ab929173b1c96a540d06776842c1","Node name for S&R":"Runware Save Image"},"widgets_values":["","ComfyUI",true],"bgcolor":"#5345bf"},{"id":5,"type":"Runware Settings","pos":[-517.2519496372029,538.1623506648771],"size":[400,958],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"colorPalette","name":"colorPalette","shape":7,"type":"RUNWAREIMAGEINFERENCECOLORPALETTE","link":null},{"localized_name":"useTemperature","name":"useTemperature","shape":7,"type":"BOOLEAN","widget":{"name":"useTemperature"},"link":null},{"localized_name":"temperature","name":"temperature","shape":7,"type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"useSystemPrompt","name":"useSystemPrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useSystemPrompt"},"link":null},{"localized_name":"systemPrompt","name":"systemPrompt","shape":7,"type":"STRING","widget":{"name":"systemPrompt"},"link":null},{"localized_name":"useTopP","name":"useTopP","shape":7,"type":"BOOLEAN","widget":{"name":"useTopP"},"link":null},{"localized_name":"topP","name":"topP","shape":7,"type":"FLOAT","widget":{"name":"topP"},"link":null},{"localized_name":"useLayers","name":"useLayers","shape":7,"type":"BOOLEAN","widget":{"name":"useLayers"},"link":null},{"localized_name":"layers","name":"layers","shape":7,"type":"INT","widget":{"name":"layers"},"link":null},{"localized_name":"useTrueCFGScale","name":"useTrueCFGScale","shape":7,"type":"BOOLEAN","widget":{"name":"useTrueCFGScale"},"link":null},{"localized_name":"trueCFGScale","name":"trueCFGScale","shape":7,"type":"FLOAT","widget":{"name":"trueCFGScale"},"link":null},{"localized_name":"useQuality","name":"useQuality","shape":7,"type":"BOOLEAN","widget":{"name":"useQuality"},"link":null},{"localized_name":"quality","name":"quality","shape":7,"type":"COMBO","widget":{"name":"quality"},"link":null},{"localized_name":"usePromptExtend","name":"usePromptExtend","shape":7,"type":"BOOLEAN","widget":{"name":"usePromptExtend"},"link":null},{"localized_name":"promptExtend","name":"promptExtend","shape":7,"type":"BOOLEAN","widget":{"name":"promptExtend"},"link":null},{"localized_name":"useEditRegions","name":"useEditRegions","shape":7,"type":"BOOLEAN","widget":{"name":"useEditRegions"},"link":null},{"localized_name":"editRegions","name":"editRegions","shape":7,"type":"STRING","widget":{"name":"editRegions"},"link":null},{"localized_name":"useThinking","name":"useThinking","shape":7,"type":"BOOLEAN","widget":{"name":"useThinking"},"link":null},{"localized_name":"thinking","name":"thinking","shape":7,"type":"BOOLEAN","widget":{"name":"thinking"},"link":null},{"localized_name":"useSequential","name":"useSequential","shape":7,"type":"BOOLEAN","widget":{"name":"useSequential"},"link":null},{"localized_name":"sequential","name":"sequential","shape":7,"type":"BOOLEAN","widget":{"name":"sequential"},"link":null},{"localized_name":"useThinkingLevel","name":"useThinkingLevel","shape":7,"type":"BOOLEAN","widget":{"name":"useThinkingLevel"},"link":null},{"localized_name":"thinkingLevel","name":"thinkingLevel","shape":7,"type":"COMBO","widget":{"name":"thinkingLevel"},"link":null},{"localized_name":"useBackground","name":"useBackground","shape":7,"type":"BOOLEAN","widget":{"name":"useBackground"},"link":null},{"localized_name":"background","name":"background","shape":7,"type":"COMBO","widget":{"name":"background"},"link":null},{"localized_name":"useStyle","name":"useStyle","shape":7,"type":"BOOLEAN","widget":{"name":"useStyle"},"link":null},{"localized_name":"style","name":"style","shape":7,"type":"STRING","widget":{"name":"style"},"link":null},{"localized_name":"useSearch","name":"useSearch","shape":7,"type":"BOOLEAN","widget":{"name":"useSearch"},"link":null},{"localized_name":"search","name":"search","shape":7,"type":"BOOLEAN","widget":{"name":"search"},"link":null},{"localized_name":"useRenderingSpeed","name":"useRenderingSpeed","shape":7,"type":"BOOLEAN","widget":{"name":"useRenderingSpeed"},"link":null},{"localized_name":"renderingSpeed","name":"renderingSpeed","shape":7,"type":"COMBO","widget":{"name":"renderingSpeed"},"link":null},{"localized_name":"useMagicPrompt","name":"useMagicPrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useMagicPrompt"},"link":null},{"localized_name":"magicPrompt","name":"magicPrompt","shape":7,"type":"COMBO","widget":{"name":"magicPrompt"},"link":null},{"localized_name":"useAutoCrop","name":"useAutoCrop","shape":7,"type":"BOOLEAN","widget":{"name":"useAutoCrop"},"link":null},{"localized_name":"autoCrop","name":"autoCrop","shape":7,"type":"BOOLEAN","widget":{"name":"autoCrop"},"link":null},{"localized_name":"useDilatePixels","name":"useDilatePixels","shape":7,"type":"BOOLEAN","widget":{"name":"useDilatePixels"},"link":null},{"localized_name":"dilatePixels","name":"dilatePixels","shape":7,"type":"INT","widget":{"name":"dilatePixels"},"link":null}],"outputs":[{"localized_name":"Settings","name":"Settings","type":"RUNWARESETTINGS","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"bfd4af111111ab929173b1c96a540d06776842c1","Node name for S&R":"Runware Settings"},"widgets_values":[false,1,false,"",false,1,false,4,false,1,false,"medium",false,false,false,"",false,false,false,false,false,"high",false,"auto",false,"auto",false,false,true,"TURBO",true,"ON",false,false,false,10],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Model Search","pos":[-838.1600442552592,560.0199895537665],"size":[272.111328125,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[1]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"bfd4af111111ab929173b1c96a540d06776842c1","Node name for S&R":"Runware Model Search"},"widgets_values":["ideogram:4@1","All","Base Model","ideogram:4@1 (Ideogram 3.0 3.0)",false],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Image Inference","pos":[-73.17208852609265,451.57380899821084],"size":[400,1130],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":1},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREIMAGEINFERENCEINPUTS","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWARESETTINGS","link":3},{"localized_name":"ultralytics","name":"ultralytics","shape":7,"type":"RUNWAREULTRALYTICSINPUTS","link":null},{"localized_name":"advancedFeatures","name":"advancedFeatures","shape":7,"type":"RUNWAREIMAGEINFERENCEADVANCEDFEATURES","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"resolution","name":"resolution","type":"COMBO","widget":{"name":"resolution"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useScheduler","name":"useScheduler","type":"BOOLEAN","widget":{"name":"useScheduler"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useClipSkip","name":"useClipSkip","type":"BOOLEAN","widget":{"name":"useClipSkip"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"outputQuality","name":"outputQuality","type":"INT","widget":{"name":"outputQuality"},"link":null},{"localized_name":"useUpscaleFactor","name":"useUpscaleFactor","type":"BOOLEAN","widget":{"name":"useUpscaleFactor"},"link":null},{"localized_name":"upscaleFactor","name":"upscaleFactor","type":"COMBO","widget":{"name":"upscaleFactor"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"STRING","links":[2]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"bfd4af111111ab929173b1c96a540d06776842c1","Node name for S&R":"Runware Image Inference"},"widgets_values":["A low-poly 3D fox sitting upright, in warm orange and white geometric facets","blurry text, misspelled words, distorted letters, duplicated signage, extra windows, warped typography, low detail, messy layout, clutter, watermark, logo artifacts, frame crop, tilted horizon",false,"Disabled","Square HD (1024x1024)",1024,1024,false,"1k",false,4,false,"Default",false,6.5,false,30907933,"randomize",false,0,0.8,false,32,"WEBP",1,"none",95,true,4],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"RUNWAREMODEL"],[2,2,0,4,0,"STRING"],[3,5,0,2,15,"RUNWARESETTINGS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.4603984853356424,"offset":[1498.3680140793367,-142.69145622865827]}},"version":0.4} \ No newline at end of file