Merge pull request 'New Image size limit patch' (#1) from hitmare-patch-image-limit into main
Reviewed-on: #1 Looks good, Merge not tested
This commit is contained in:
commit
4178bd4788
162
api.py
162
api.py
|
@ -50,7 +50,7 @@ Eris TRTpatch:
|
||||||
Please refer the Readme on https://git.foxo.me/Hitmare/Eris_api_tensor_patch for the full TRTpatch instructions
|
Please refer the Readme on https://git.foxo.me/Hitmare/Eris_api_tensor_patch for the full TRTpatch instructions
|
||||||
|
|
||||||
Eris Imagelimit:
|
Eris Imagelimit:
|
||||||
Will resize every request down to 1024px max on height and width, keeping the aspect ratio. Also reduces Steps down to 35 if the set Steps exceeds 35
|
Will resize every request down to 1024px max on height and width, keeping the aspect ratio. Also reduces Steps down to the set limit if the set Steps exceeds the limit
|
||||||
Compatible with the TRTpatch. Please refer the Readme on https://git.foxo.me/Hitmare/Eris_api_tensor_patch for the full TRTpatch instructions
|
Compatible with the TRTpatch. Please refer the Readme on https://git.foxo.me/Hitmare/Eris_api_tensor_patch for the full TRTpatch instructions
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +65,18 @@ eris_imagelog = False
|
||||||
eris_consolelog = False
|
eris_consolelog = False
|
||||||
eris_TRTpatch = False
|
eris_TRTpatch = False
|
||||||
eris_imagelimit = False
|
eris_imagelimit = False
|
||||||
|
# Limits for text2image. needs eris_imagelimit = True
|
||||||
|
txt_max_width_height = 1024
|
||||||
|
txt_min_width_height = 320
|
||||||
|
txt_max_pixel_count = 589824
|
||||||
|
txt_max_steps = 35
|
||||||
|
txt_max_characters = 2000
|
||||||
|
# Limits for image2image. needs eris_imagelimit = True
|
||||||
|
img_max_width_height = 1024
|
||||||
|
img_min_width_height = 320
|
||||||
|
img_max_pixel_count = 589824
|
||||||
|
img_max_steps = 35
|
||||||
|
img_max_characters = 2000
|
||||||
|
|
||||||
def script_name_to_index(name, scripts):
|
def script_name_to_index(name, scripts):
|
||||||
try:
|
try:
|
||||||
|
@ -379,22 +390,70 @@ class Api:
|
||||||
|
|
||||||
# Eris imagelimit 1024x1024 35 Steps
|
# Eris imagelimit 1024x1024 35 Steps
|
||||||
if eris_imagelimit:
|
if eris_imagelimit:
|
||||||
# Add a check to only resize if the dimensions are larger than 1024
|
# Configuration variables
|
||||||
if txt2imgreq.width > 1024 or txt2imgreq.height > 1024:
|
#max_width_height = 1024
|
||||||
# Calculate the aspect ratio
|
#min_width_height = 320
|
||||||
|
#max_pixel_count = 589824
|
||||||
|
#max_steps = 35
|
||||||
|
#max_characters = 2000
|
||||||
|
max_width_height = txt_max_width_height
|
||||||
|
min_width_height = txt_min_width_height
|
||||||
|
max_pixel_count = txt_max_pixel_count
|
||||||
|
max_steps = txt_max_steps
|
||||||
|
max_characters = txt_max_characters
|
||||||
|
|
||||||
|
# Log the initial values
|
||||||
|
# initial_pixels = txt2imgreq.width * txt2imgreq.height
|
||||||
|
# print(f'Before processing: Resolution={txt2imgreq.width}x{txt2imgreq.height}, '
|
||||||
|
# f'Steps={txt2imgreq.steps}, Total Pixels={initial_pixels}')
|
||||||
|
|
||||||
|
# Log the length of the prompt before processing
|
||||||
|
# original_length = len(txt2imgreq.prompt)
|
||||||
|
# print(f'Original prompt length: {original_length} characters')
|
||||||
|
|
||||||
|
# Truncate the prompt if it exceeds the maximum number of characters
|
||||||
|
if len(txt2imgreq.prompt) > max_characters:
|
||||||
|
txt2imgreq.prompt = txt2imgreq.prompt[:max_characters]
|
||||||
|
# print(f'Truncated prompt length: {len(txt2imgreq.prompt)} characters')
|
||||||
|
|
||||||
|
# Calculate the initial aspect ratio
|
||||||
aspect_ratio = txt2imgreq.width / txt2imgreq.height
|
aspect_ratio = txt2imgreq.width / txt2imgreq.height
|
||||||
# Scale down to the maximum allowed dimensions while retaining the aspect ratio
|
|
||||||
if aspect_ratio > 1: # If the image is wider than it is tall
|
# Enforce maximum dimensions
|
||||||
txt2imgreq.width = 1024
|
if txt2imgreq.width > max_width_height or txt2imgreq.height > max_width_height:
|
||||||
txt2imgreq.height = round(1024 / aspect_ratio)
|
if aspect_ratio > 1: # Image is wider than it is tall
|
||||||
else: # If the image is as wide as it is tall or taller
|
txt2imgreq.width = max_width_height
|
||||||
txt2imgreq.height = 1024
|
txt2imgreq.height = int(max_width_height / aspect_ratio)
|
||||||
txt2imgreq.width = round(1024 * aspect_ratio)
|
else: # Image is taller than it is wide
|
||||||
# Ensure both dimensions are a multiple of 64 (if this is a requirement for your use case)
|
txt2imgreq.height = max_width_height
|
||||||
|
txt2imgreq.width = int(max_width_height * aspect_ratio)
|
||||||
|
|
||||||
|
# Enforce minimum dimensions
|
||||||
|
if txt2imgreq.width < min_width_height or txt2imgreq.height < min_width_height:
|
||||||
|
if aspect_ratio > 1: # Image is wider than it is tall
|
||||||
|
txt2imgreq.width = min_width_height
|
||||||
|
txt2imgreq.height = int(min_width_height / aspect_ratio)
|
||||||
|
else: # Image is taller than it is wide
|
||||||
|
txt2imgreq.height = min_width_height
|
||||||
|
txt2imgreq.width = int(min_width_height * aspect_ratio)
|
||||||
|
|
||||||
|
# Adjust based on maximum pixel count
|
||||||
|
if txt2imgreq.width * txt2imgreq.height > max_pixel_count:
|
||||||
|
scale_factor = (max_pixel_count / (txt2imgreq.width * txt2imgreq.height)) ** 0.5
|
||||||
|
txt2imgreq.width = int(txt2imgreq.width * scale_factor)
|
||||||
|
txt2imgreq.height = int(txt2imgreq.height * scale_factor)
|
||||||
|
|
||||||
|
# Clamp steps to the maximum allowed
|
||||||
|
txt2imgreq.steps = min(txt2imgreq.steps, max_steps)
|
||||||
|
|
||||||
|
# Ensure both dimensions are a multiple of 64
|
||||||
txt2imgreq.width = round(txt2imgreq.width // 64) * 64
|
txt2imgreq.width = round(txt2imgreq.width // 64) * 64
|
||||||
txt2imgreq.height = round(txt2imgreq.height // 64) * 64
|
txt2imgreq.height = round(txt2imgreq.height // 64) * 64
|
||||||
# Reduce maximum steps
|
|
||||||
txt2imgreq.steps = min(txt2imgreq.steps, 35)
|
# Calculate the adjusted pixel amount after processing
|
||||||
|
# adjusted_pixels = txt2imgreq.width * txt2imgreq.height
|
||||||
|
# print(f'After processing: Resolution={txt2imgreq.width}x{txt2imgreq.height}, '
|
||||||
|
# f'Steps={txt2imgreq.steps}, Total Pixels={adjusted_pixels}')
|
||||||
# Eris ______
|
# Eris ______
|
||||||
|
|
||||||
|
|
||||||
|
@ -474,22 +533,65 @@ class Api:
|
||||||
|
|
||||||
# Eris imagelimit 1024x1024 35 Steps
|
# Eris imagelimit 1024x1024 35 Steps
|
||||||
if eris_imagelimit:
|
if eris_imagelimit:
|
||||||
# Add a check to only resize if the dimensions are larger than 1024
|
# Configuration variables
|
||||||
if img2imgreq.width > 1024 or img2imgreq.height > 1024:
|
#max_width_height = 1024
|
||||||
# Calculate the aspect ratio of the input image
|
#min_width_height = 320
|
||||||
|
#max_pixel_count = 589824
|
||||||
|
#max_steps = 35
|
||||||
|
#max_characters = 2000
|
||||||
|
max_width_height = img_max_width_height
|
||||||
|
min_width_height = img_min_width_height
|
||||||
|
max_pixel_count = img_max_pixel_count
|
||||||
|
max_steps = img_max_steps
|
||||||
|
max_characters = img_max_characters
|
||||||
|
|
||||||
|
# Log the initial values
|
||||||
|
# initial_pixels = img2imgreq.width * img2imgreq.height
|
||||||
|
# print(f'Before processing: Resolution={img2imgreq.width}x{img2imgreq.height}, '
|
||||||
|
# f'Steps={img2imgreq.steps}, Total Pixels={initial_pixels}')
|
||||||
|
|
||||||
|
# Truncate the prompt if it exceeds the maximum number of characters
|
||||||
|
if len(img2imgreq.prompt) > max_characters:
|
||||||
|
img2imgreq.prompt = img2imgreq.prompt[:max_characters]
|
||||||
|
|
||||||
|
# Calculate the initial aspect ratio
|
||||||
aspect_ratio = img2imgreq.width / img2imgreq.height
|
aspect_ratio = img2imgreq.width / img2imgreq.height
|
||||||
# Scale down to the maximum allowed dimensions while retaining the aspect ratio
|
|
||||||
if aspect_ratio > 1: # If the image is wider than it is tall
|
# Enforce maximum dimensions
|
||||||
img2imgreq.width = 1024
|
if img2imgreq.width > max_width_height or img2imgreq.height > max_width_height:
|
||||||
img2imgreq.height = round(1024 / aspect_ratio)
|
if aspect_ratio > 1: # Image is wider than it is tall
|
||||||
else: # If the image is as wide as it is tall or taller
|
img2imgreq.width = max_width_height
|
||||||
img2imgreq.height = 1024
|
img2imgreq.height = int(max_width_height / aspect_ratio)
|
||||||
img2imgreq.width = round(1024 * aspect_ratio)
|
else: # Image is taller than it is wide
|
||||||
# Ensure both dimensions are a multiple of 64 (if this is a requirement for your use case)
|
img2imgreq.height = max_width_height
|
||||||
img2imgreq.width = round(img2imgreq.width / 64) * 64
|
img2imgreq.width = int(max_width_height * aspect_ratio)
|
||||||
img2imgreq.height = round(img2imgreq.height / 64) * 64
|
|
||||||
# Reduce maximum steps
|
# Enforce minimum dimensions
|
||||||
img2imgreq.steps = min(img2imgreq.steps, 35)
|
if img2imgreq.width < min_width_height or img2imgreq.height < min_width_height:
|
||||||
|
if aspect_ratio > 1: # Image is wider than it is tall
|
||||||
|
img2imgreq.width = min_width_height
|
||||||
|
img2imgreq.height = int(min_width_height / aspect_ratio)
|
||||||
|
else: # Image is taller than it is wide
|
||||||
|
img2imgreq.height = min_width_height
|
||||||
|
img2imgreq.width = int(min_width_height * aspect_ratio)
|
||||||
|
|
||||||
|
# Adjust based on maximum pixel count
|
||||||
|
if img2imgreq.width * img2imgreq.height > max_pixel_count:
|
||||||
|
scale_factor = (max_pixel_count / (img2imgreq.width * img2imgreq.height)) ** 0.5
|
||||||
|
img2imgreq.width = int(img2imgreq.width * scale_factor)
|
||||||
|
img2imgreq.height = int(img2imgreq.height * scale_factor)
|
||||||
|
|
||||||
|
# Clamp steps to the maximum allowed
|
||||||
|
img2imgreq.steps = min(img2imgreq.steps, max_steps)
|
||||||
|
|
||||||
|
# Ensure both dimensions are a multiple of 64
|
||||||
|
img2imgreq.width = round(img2imgreq.width // 64) * 64
|
||||||
|
img2imgreq.height = round(img2imgreq.height // 64) * 64
|
||||||
|
|
||||||
|
# Calculate the adjusted pixel amount after processing
|
||||||
|
# adjusted_pixels = img2imgreq.width * img2imgreq.height
|
||||||
|
# print(f'After processing: Resolution={img2imgreq.width}x{img2imgreq.height}, '
|
||||||
|
# f'Steps={img2imgreq.steps}, Total Pixels={adjusted_pixels}')
|
||||||
# Eris ______
|
# Eris ______
|
||||||
|
|
||||||
# Eris console prompt log -> writes promts into the console/terminal window
|
# Eris console prompt log -> writes promts into the console/terminal window
|
||||||
|
|
Loading…
Reference in New Issue