Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
ComfyUI
Commits
6dc02c7b
Commit
6dc02c7b
authored
Aug 15, 2023
by
comfyanonymous
Browse files
Add a "resize_source" option to Image and Latent CompositeMasked.
parent
7567c4ac
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
6 deletions
+10
-6
comfy_extras/nodes_mask.py
comfy_extras/nodes_mask.py
+10
-6
No files found.
comfy_extras/nodes_mask.py
View file @
6dc02c7b
...
@@ -2,14 +2,16 @@ import torch
...
@@ -2,14 +2,16 @@ import torch
from
nodes
import
MAX_RESOLUTION
from
nodes
import
MAX_RESOLUTION
def
composite
(
destination
,
source
,
x
,
y
,
mask
=
None
,
multiplier
=
8
):
def
composite
(
destination
,
source
,
x
,
y
,
mask
=
None
,
multiplier
=
8
,
resize_source
=
False
):
if
resize_source
:
source
=
torch
.
nn
.
functional
.
interpolate
(
source
,
size
=
(
destination
.
shape
[
2
],
destination
.
shape
[
3
]),
mode
=
"bilinear"
)
x
=
max
(
-
source
.
shape
[
3
]
*
multiplier
,
min
(
x
,
destination
.
shape
[
3
]
*
multiplier
))
x
=
max
(
-
source
.
shape
[
3
]
*
multiplier
,
min
(
x
,
destination
.
shape
[
3
]
*
multiplier
))
y
=
max
(
-
source
.
shape
[
2
]
*
multiplier
,
min
(
y
,
destination
.
shape
[
2
]
*
multiplier
))
y
=
max
(
-
source
.
shape
[
2
]
*
multiplier
,
min
(
y
,
destination
.
shape
[
2
]
*
multiplier
))
left
,
top
=
(
x
//
multiplier
,
y
//
multiplier
)
left
,
top
=
(
x
//
multiplier
,
y
//
multiplier
)
right
,
bottom
=
(
left
+
source
.
shape
[
3
],
top
+
source
.
shape
[
2
],)
right
,
bottom
=
(
left
+
source
.
shape
[
3
],
top
+
source
.
shape
[
2
],)
if
mask
is
None
:
if
mask
is
None
:
mask
=
torch
.
ones_like
(
source
)
mask
=
torch
.
ones_like
(
source
)
else
:
else
:
...
@@ -40,6 +42,7 @@ class LatentCompositeMasked:
...
@@ -40,6 +42,7 @@ class LatentCompositeMasked:
"source"
:
(
"LATENT"
,),
"source"
:
(
"LATENT"
,),
"x"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
8
}),
"x"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
8
}),
"y"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
8
}),
"y"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
8
}),
"resize_source"
:
(
"BOOLEAN"
,
{
"default"
:
False
}),
},
},
"optional"
:
{
"optional"
:
{
"mask"
:
(
"MASK"
,),
"mask"
:
(
"MASK"
,),
...
@@ -50,11 +53,11 @@ class LatentCompositeMasked:
...
@@ -50,11 +53,11 @@ class LatentCompositeMasked:
CATEGORY
=
"latent"
CATEGORY
=
"latent"
def
composite
(
self
,
destination
,
source
,
x
,
y
,
mask
=
None
):
def
composite
(
self
,
destination
,
source
,
x
,
y
,
resize_source
,
mask
=
None
):
output
=
destination
.
copy
()
output
=
destination
.
copy
()
destination
=
destination
[
"samples"
].
clone
()
destination
=
destination
[
"samples"
].
clone
()
source
=
source
[
"samples"
]
source
=
source
[
"samples"
]
output
[
"samples"
]
=
composite
(
destination
,
source
,
x
,
y
,
mask
,
8
)
output
[
"samples"
]
=
composite
(
destination
,
source
,
x
,
y
,
mask
,
8
,
resize_source
)
return
(
output
,)
return
(
output
,)
class
ImageCompositeMasked
:
class
ImageCompositeMasked
:
...
@@ -66,6 +69,7 @@ class ImageCompositeMasked:
...
@@ -66,6 +69,7 @@ class ImageCompositeMasked:
"source"
:
(
"IMAGE"
,),
"source"
:
(
"IMAGE"
,),
"x"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
1
}),
"x"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
1
}),
"y"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
1
}),
"y"
:
(
"INT"
,
{
"default"
:
0
,
"min"
:
0
,
"max"
:
MAX_RESOLUTION
,
"step"
:
1
}),
"resize_source"
:
(
"BOOLEAN"
,
{
"default"
:
False
}),
},
},
"optional"
:
{
"optional"
:
{
"mask"
:
(
"MASK"
,),
"mask"
:
(
"MASK"
,),
...
@@ -76,9 +80,9 @@ class ImageCompositeMasked:
...
@@ -76,9 +80,9 @@ class ImageCompositeMasked:
CATEGORY
=
"image"
CATEGORY
=
"image"
def
composite
(
self
,
destination
,
source
,
x
,
y
,
mask
=
None
):
def
composite
(
self
,
destination
,
source
,
x
,
y
,
resize_source
,
mask
=
None
):
destination
=
destination
.
clone
().
movedim
(
-
1
,
1
)
destination
=
destination
.
clone
().
movedim
(
-
1
,
1
)
output
=
composite
(
destination
,
source
.
movedim
(
-
1
,
1
),
x
,
y
,
mask
,
1
).
movedim
(
1
,
-
1
)
output
=
composite
(
destination
,
source
.
movedim
(
-
1
,
1
),
x
,
y
,
mask
,
1
,
resize_source
).
movedim
(
1
,
-
1
)
return
(
output
,)
return
(
output
,)
class
MaskToImage
:
class
MaskToImage
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment