Enhance NativeImageSizesNode to support scaling of image dimensions

This commit is contained in:
Hans Dembinski
2026-05-10 14:47:21 +02:00
parent 9cfebb2c83
commit 4261f722ce
2 changed files with 21 additions and 4 deletions
+6 -2
View File
@@ -11,6 +11,8 @@ IMAGE_SIZE_PRESETS: dict[str, tuple[int, int]] = {
"9:16": (928, 1664),
}
SCALE_PRESETS: tuple[str, str, str] = ("0.5", "1", "2")
class NativeImageSizesNode:
NODE_KEY: str = "NativeImageSizes"
@@ -21,6 +23,7 @@ class NativeImageSizesNode:
return {
"required": {
"preset": (list(IMAGE_SIZE_PRESETS.keys()),),
"scale": (list(SCALE_PRESETS),),
}
}
@@ -29,9 +32,10 @@ class NativeImageSizesNode:
FUNCTION: str = "select_size"
CATEGORY: str = "image/resolution"
def select_size(self, preset: str) -> tuple[int, int]:
def select_size(self, preset: str, scale: str) -> tuple[int, int]:
width, height = IMAGE_SIZE_PRESETS[preset]
return (width, height)
factor = float(scale)
return (round(width * factor), round(height * factor))
NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS = build_node_mappings(globals())
+15 -2
View File
@@ -14,17 +14,30 @@ from nodes.native_image_sizes import (
)
def test_native_image_sizes_node_returns_expected_dimensions(preset, expected):
node = NativeImageSizesNode()
result = node.select_size(preset)
result = node.select_size(preset, "1")
assert result == expected
def test_native_image_sizes_node_returns_int_dimensions():
node = NativeImageSizesNode()
width, height = node.select_size("16:9")
width, height = node.select_size("16:9", "1")
assert isinstance(width, int)
assert isinstance(height, int)
@pytest.mark.parametrize(
"scale,expected",
[
("0.5", (832, 464)),
("1", (1664, 928)),
("2", (3328, 1856)),
],
)
def test_native_image_sizes_node_applies_scale(scale, expected):
node = NativeImageSizesNode()
assert node.select_size("16:9", scale) == expected
def test_node_class_mappings_are_discovered_dynamically():
assert "NativeImageSizes" in NODE_CLASS_MAPPINGS
assert NODE_CLASS_MAPPINGS["NativeImageSizes"] is NativeImageSizesNode