Skip to content

Commit

Permalink
ImageScaleRestoreV2,ImageScaleByAspectRatioV2 and ImageAutoCropV2 nod…
Browse files Browse the repository at this point in the history
…es add options for width and height
  • Loading branch information
chflame163 committed May 20, 2024
1 parent e397930 commit e7ad91f
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 13 deletions.
12 changes: 7 additions & 5 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ When this error has occurred, please check the network environment.
## Update
<font size="4">**If the dependency package error after updating, please reinstall the relevant dependency packages. </font><br />

* [ImageScaleRestoreV2](#ImageScaleRestoreV2), [ImageScaleByAspectRatioV2](#ImageScaleByAspectRatioV2), [ImageAutoCropV2](#ImageAutoCropV2) nodes add options for ```width``` and ```height```, which can specify width or height as fixed values.
* Commit [PurgeVRAM](#PurgeVRAM) node, Clean up VRAM an RAM.
* Commit [AutoAdjust](#AutoAdjust) node, it can automatically adjust image contrast and white balance.
* Commit [RGBValue](#RGBValue) node to output the color value as a single decimal value of R, G, B. This idea is from [vxinhao](https://github.com/vxinhao/color2rgb), Thanks.
Expand Down Expand Up @@ -573,8 +574,8 @@ The V2 upgraded version of ImageScaleRestore.
Node options:
![image](image/image_scale_restore_v2_node.png)
The following changes have been made based on ImageScaleRestore:
* scale_by: Allow scaling by specified size on long or short sides.
* scale_by_length: When scale_by is set to "longest", this will be used as the length of the long edge of the image; When set to "shortest", it serves as the length of the short edge.
* scale_by: Allow scaling by specified dimensions for longest, shortest, width, or height.
* scale_by_length: The value here is used as ```scale_by``` to specify the length of the edge.

### <a id="table1">ImageMaskScaleAs</a>
Scale the image or mask to the size of the reference image (or reference mask).
Expand Down Expand Up @@ -632,8 +633,8 @@ V2 Upgraded Version of ImageScaleByAspectRatio
Node options:
![image](image/image_scale_by_aspect_ratio_v2_node.png)
The following changes have been made based on ImageScaleByAspectRatio:
* scale_to_side: Allow scaling by specified size on long or short sides.
* scale_to_length: When scale_by_side is set to "longest", this will be used as the length of the long edge of the image; When set to "shortest", it serves as the length of the short edge.
* scale_by: Allow scaling by specified dimensions for longest, shortest, width, or height.
* scale_by_length: The value here is used as ```scale_by``` to specify the length of the edge.



Expand Down Expand Up @@ -1020,7 +1021,8 @@ The V2 upgrad version of ```ImageAutoCrop```, it has made the following changes
* Add optional input for mask. when there is a mask input, use that input directly to skip the built-in mask generation.
* Add ```fill_background```. When set to False, the background will not be processed and any parts beyond the frame will not be included in the output range.
* ```aspect_ratio``` adds the ```original``` option.
* ```scale_by_longest_side``` changed to support scaling by long or short edge, set in ```scale_to_side```. The side length is set in ```scale_to__length```.
* scale_by: Allow scaling by specified dimensions for longest, shortest, width, or height.
* scale_by_length: The value here is used as ```scale_by``` to specify the length of the edge.


### <a id="table1">GetImageSize</a>
Expand Down
12 changes: 7 additions & 5 deletions README_CN.MD
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ git clone https://github.com/chflame163/ComfyUI_LayerStyle.git
## 更新说明
<font size="4">**如果本插件更新后出现依赖包错误,请重新安装相关依赖包。

* [ImageScaleRestoreV2](#ImageScaleRestoreV2), [ImageScaleByAspectRatioV2](#ImageScaleByAspectRatioV2), [ImageAutoCropV2](#ImageAutoCropV2)节点增加```width``````height```选项,可指定宽度或高度为固定值。
* 添加 [PurgeVRAM](#PurgeVRAM) 节点, 清理显存和内存。
* 添加 [AutoAdjust](#AutoAdjust) 节点, 自动调整图片对比度和白平衡。
* 添加 [RGBValue](#RGBValue) 节点, 将色值输出为单独的R, G, B三个10进制数值。这个想法来自[vxinhao](https://github.com/vxinhao/color2rgb),感谢。
Expand Down Expand Up @@ -567,8 +568,8 @@ ImageScaleRestore的V2升级版。
节点选项说明:
![image](image/image_scale_restore_v2_node.png)
在ImageScaleRestore基础上做了如下改变:
* scale_by: 允许按长边或短边指定尺寸缩放
* scale_by_length: scale_by被设置为"longest"时,此项将作为是图像长边的长度; 设置为"shortest"时,作为短边的长度
* scale_by: 允许按长边、短边、宽度或高度指定尺寸缩放
* scale_by_length: 这里的数值作为scale_by指定边的长度


### <a id="table1">ImageMaskScaleAs</a>
Expand Down Expand Up @@ -622,8 +623,8 @@ ImageScaleByAspectRatio的V2升级版
节点选项说明:
![image](image/image_scale_by_aspect_ratio_v2_node.png)
在ImageScaleByAspectRatio基础上做了如下改变:
* scale_to_side: 允许按长边或短边指定尺寸缩放
* scale_to_length: scale_by_side被设置为"longest"时,此项将作为是图像长边的长度; 设置为"shortest"时,作为短边的长度
* scale_by: 允许按长边、短边、宽度或高度指定尺寸缩放
* scale_by_length: 这里的数值作为scale_by指定边的长度



Expand Down Expand Up @@ -1009,7 +1010,8 @@ cropped_mask: 裁切后的遮罩。
* 增加```mask```可选输入。当有mask输入时,直接使用该输入跳过内置遮罩生成。
* 增加```fill_background```, 当此项设置为False时将不处理背景,并且超出画幅的部分不纳入输出范围。
* ```aspect_ratio```增加```original```(原始画面宽高比)选项。
* 按长边缩放改为支持按长边或短边缩放,在```scale_to_side```中设置。边长在```scale_to_length```中设置。
* scale_by: 允许按长边、短边、宽度或高度指定尺寸缩放。
* scale_by_length: 这里的数值作为scale_by指定边的长度。


### <a id="table1">GetImageSize</a>
Expand Down
14 changes: 13 additions & 1 deletion py/image_auto_crop_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def INPUT_TYPES(self):
matting_method_list = ['RMBG 1.4', 'SegmentAnything']
detect_mode = ['min_bounding_rect', 'max_inscribed_rect', 'mask_area']
ratio_list = ['1:1', '3:2', '4:3', '16:9', '2:3', '3:4', '9:16', 'custom', 'detect_mask', 'original']
scale_to_side_list = ['None', 'longest', 'shortest']
scale_to_side_list = ['None', 'longest', 'shortest', 'width', 'height']
return {
"required": {
"image": ("IMAGE", ), #
Expand Down Expand Up @@ -183,6 +183,12 @@ def image_auto_crop_v2(self, image, fill_background, background_color, aspect_ra
elif scale_to_side == 'shortest':
target_height = scale_to_length
target_width = int(target_height * ratio)
elif scale_to_side == 'width':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'height':
target_height = scale_to_length
target_width = int(target_height * ratio)
else:
target_width = orig_width
target_height = int(target_width / ratio)
Expand All @@ -193,6 +199,12 @@ def image_auto_crop_v2(self, image, fill_background, background_color, aspect_ra
elif scale_to_side == 'shortest':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'width':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'height':
target_height = scale_to_length
target_width = int(target_height * ratio)
else:
target_height = orig_height
target_width = int(target_height * ratio)
Expand Down
14 changes: 13 additions & 1 deletion py/image_scale_by_aspect_ratio_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def INPUT_TYPES(self):
fit_mode = ['letterbox', 'crop', 'fill']
method_mode = ['lanczos', 'bicubic', 'hamming', 'bilinear', 'box', 'nearest']
multiple_list = ['8', '16', '32', '64', 'None']
scale_to_list = ['None', 'longest', 'shortest']
scale_to_list = ['None', 'longest', 'shortest', 'width', 'height']
return {
"required": {
"aspect_ratio": (ratio_list,),
Expand Down Expand Up @@ -90,6 +90,12 @@ def image_scale_by_aspect_ratio(self, aspect_ratio, proportional_width, proporti
elif scale_to_side == 'shortest':
target_height = scale_to_length
target_width = int(target_height * ratio)
elif scale_to_side == 'width':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'height':
target_height = scale_to_length
target_width = int(target_height * ratio)
else:
target_width = orig_width
target_height = int(target_width / ratio)
Expand All @@ -100,6 +106,12 @@ def image_scale_by_aspect_ratio(self, aspect_ratio, proportional_width, proporti
elif scale_to_side == 'shortest':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'width':
target_width = scale_to_length
target_height = int(target_width / ratio)
elif scale_to_side == 'height':
target_height = scale_to_length
target_width = int(target_height * ratio)
else:
target_height = orig_height
target_width = int(target_height * ratio)
Expand Down
8 changes: 7 additions & 1 deletion py/image_scale_restore_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def __init__(self):
@classmethod
def INPUT_TYPES(self):
method_mode = ['lanczos', 'bicubic', 'hamming', 'bilinear', 'box', 'nearest']
scale_by_list = ['by_scale', 'longest', 'shortest']
scale_by_list = ['by_scale', 'longest', 'shortest', 'width', 'height']
return {
"required": {
"image": ("IMAGE", ), #
Expand Down Expand Up @@ -75,6 +75,12 @@ def image_scale_restore(self, image, scale, method,
else:
target_height = scale_by_length
target_width = int(target_height * orig_width / orig_height)
if scale_by == 'width':
target_width = scale_by_length
target_height = int(target_width * orig_height / orig_width)
if scale_by == 'height':
target_height = scale_by_length
target_width = int(target_height * orig_width / orig_height)
if target_width < 4:
target_width = 4
if target_height < 4:
Expand Down

0 comments on commit e7ad91f

Please sign in to comment.