Initial commit
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 BRADSEC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,28 @@
|
||||
# Custom Node - ResolutionSelector for ComfyUI
|
||||
|
||||
Custom image resolution helper node for [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
||||
|
||||
- Select base SDXL resolution, width and height are returned as INT values.
|
||||
- If using older model SD 1.5 or SD 2.1 use the base adjustment dropdown. This will adjust (reduce) the base_resolution to suit the model. ie. 1024 (SDXL) will equal 768 in SD21 and 512 in SD15.
|
||||
- Resolution list based off what is currently being used in the [Fooocus SDXL Web UI](https://github.com/lllyasviel/Fooocus)
|
||||
|
||||
### Installation
|
||||
|
||||
```
|
||||
# Change to the directory you installed ComfyUI
|
||||
cd pathTo/ComfyUI
|
||||
|
||||
# Change to the custom_nodes directory
|
||||
cd custom_nodes
|
||||
|
||||
git clone https://github.com/bradsec/ComfyUI_ResolutionSelector.git
|
||||
|
||||
# Restart ComfyUI
|
||||
```
|
||||
|
||||
- The new node can be found under:
|
||||
`Add Node > utils > Resolution Selector (w x h)`
|
||||
|
||||
|
||||
|
||||

|
||||
@@ -0,0 +1,3 @@
|
||||
from .resolution_selector import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
|
||||
|
||||
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
# Define resolution presets
|
||||
# Resolutions which appear to work well for SDXL as used in https://github.com/lllyasviel/Fooocus
|
||||
BASE_RESOLUTIONS = [(1024, 1024), (704, 1408), (704, 1344), (768, 1344), (768, 1280), (832, 1216), (832, 1152), (896, 1152), (896, 1088), (960, 1088), (960, 1024), (1024, 960), (1088, 960), (1088, 896), (1152, 896), (1152, 832), (1216, 832), (1280, 768), (1344, 768), (1344, 704), (1408, 704), (1472, 704), (1536, 640), (1600, 640), (1664, 576), (1728, 576)]
|
||||
|
||||
# Create a list of resolution strings for the drop-down menu
|
||||
resolution_strings = [f"{width}x{height}" for width, height in BASE_RESOLUTIONS]
|
||||
|
||||
# Create the custom node class
|
||||
class ResolutionSelector:
|
||||
"""
|
||||
A node to provide a drop-down list of resolutions and returns two int values (width and height).
|
||||
"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
"""
|
||||
Return a dictionary which contains config for all input fields.
|
||||
"""
|
||||
return {
|
||||
"required": {
|
||||
"base_resolution": (resolution_strings,),
|
||||
"base_adjustment": (["SDXL (None)", "SD21 (75%)", "SD15 (50%)"],)
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("INT", "INT")
|
||||
RETURN_NAMES = ("width", "height")
|
||||
FUNCTION = "select_resolution"
|
||||
CATEGORY = 'utils'
|
||||
|
||||
@staticmethod
|
||||
def select_resolution(base_resolution, base_adjustment):
|
||||
"""
|
||||
Returns the width and height based on the selected resolution and adjustment.
|
||||
|
||||
Args:
|
||||
base_resolution (str): Selected resolution in the format "widthxheight".
|
||||
base_adjustment (str): Selected adjustment (resolution values reduction) based on Stable Diffusion version.
|
||||
|
||||
Returns:
|
||||
Tuple[int, int]: Adjusted width and height.
|
||||
"""
|
||||
try:
|
||||
width, height = map(int, base_resolution.split('x'))
|
||||
except ValueError:
|
||||
raise ValueError("Invalid base_resolution format.")
|
||||
|
||||
adjustment_factors = {"SDXL (None)": 1, "SD21 (75%)": 0.75, "SD15 (50%)": 0.5}
|
||||
factor = adjustment_factors.get(base_adjustment)
|
||||
|
||||
if factor is None:
|
||||
raise ValueError("Invalid base_adjustment value.")
|
||||
|
||||
width = int(width * factor)
|
||||
height = int(height * factor)
|
||||
|
||||
return width, height
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"ResolutionSelector": ResolutionSelector,
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"ResolutionSelector": "Resolution Selector (w x h)",
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
Reference in New Issue
Block a user