Merge pull request #1 from youyegit/dev

Dev
This commit is contained in:
youyegit
2023-08-23 10:51:16 +08:00
committed by GitHub
3 changed files with 55 additions and 2 deletions
+2
View File
@@ -1,5 +1,7 @@
# Introduction
Some nodes for stable diffusion comfyui.Sometimes it helps conveniently to use less nodes for doing the same things.
If you use workflow in my "blogs" repo, you need to dowmload these nodes.
# How to install
The same with others custom nodes. Just cd custom_nodes and then git clone.
+47
View File
@@ -0,0 +1,47 @@
# Define a function that takes a tuple representing the image width and height as a parameter
def get_SDXL_best_size(image_size):
# Assign the image width and height to w and h respectively
w, h = image_size
# Calculate the image aspect ratio
ratio = w / h
# Define a list to store the target sizes
target_sizes = [
(1024, 1024), # 1 # 1/1
(1152, 896), # 1.2857... # 4/3
(896, 1152), # 0.7777... # 3/4
(1216, 832), # 1.4615... # 3/2 7/5
(832, 1216), # 0.6842... # 2/3 5/7
(1344, 768), # 1.75 # 16/9
(768, 1344), # 0.5714... # 9/16
(1536, 640), # 2.4 # 12/5
(640, 1536) # 0.4166 # 5/12
]
# Define a variable to store the minimum difference
min_diff = float('inf')
# Define a variable to store the closest target size
best_size = None
# Loop through the target size list
for target_size in target_sizes:
# Calculate the target size aspect ratio
target_ratio = target_size[0] / target_size[1]
# Calculate the absolute value of the difference between the image aspect ratio and the target size aspect ratio
diff = abs(ratio - target_ratio)
# If the difference is smaller than the minimum difference
if diff < min_diff:
# Update the minimum difference and the closest target size
min_diff = diff
best_size = target_size
# Return the closest target size
return best_size
# Test the function
def test1():
print(get_SDXL_best_size((800, 800))) # Output (1024, 1024)
print(get_SDXL_best_size((1200, 900))) # Output (1152, 896)
print(get_SDXL_best_size((600, 800))) # Output (896, 1152)
print(get_SDXL_best_size((700, 500))) # Output (1216, 832)
print(get_SDXL_best_size((1080, 1920))) # Output (768, 1344)
print(get_SDXL_best_size((1200, 500))) # Output (1536, 640)
# test1()
+6 -2
View File
@@ -10,6 +10,8 @@ import comfy.sd
import folder_paths
from .tdxh_lib import get_SDXL_best_size
# Tensor to PIL
def tensor2pil(image):
return Image.fromarray(np.clip(255. * image.cpu().numpy().squeeze(), 0, 255).astype(np.uint8))
@@ -70,7 +72,7 @@ class TdxhImageToSizeAdvanced:
}),
"what_to_follow": ([
"only_width", "only_height", "both_width_and_height", "only_ratio",
"only_image"
"only_image","get_SDXL_best_size"
],),
}
}
@@ -85,9 +87,10 @@ class TdxhImageToSizeAdvanced:
image_size = self.tdxh_image_to_size(image)
# width = self.tdxh_nearest_divisible_by_8(width)
# height = self.tdxh_nearest_divisible_by_8(height)
# w, h = image_size[0], image_size[1]
if what_to_follow == "only_image":
return image_size
elif what_to_follow == "get_SDXL_best_size":
w, h = get_SDXL_best_size((image_size[0],image_size[1]))
elif what_to_follow == "only_ratio":
w, h = ratio * image_size[0], ratio * image_size[1]
w, h = self.tdxh_nearest_divisible_by_8(w), self.tdxh_nearest_divisible_by_8(h)
@@ -99,6 +102,7 @@ class TdxhImageToSizeAdvanced:
elif what_to_follow == "only_height":
new_width = self.tdxh_nearest_divisible_by_8(image_size[0] * height / image_size[1])
w, h = new_width, height
return self.tdxh_size_out(w,h)
def tdxh_image_to_size(self, image):