diff --git a/README.MD b/README.MD index cc02d20..b66f94b 100644 --- a/README.MD +++ b/README.MD @@ -70,6 +70,9 @@ When this error has occurred, please check the network environment. ## Update **If the dependency package error after updating, please reinstall the relevant dependency packages.
+ +* Commit [SaveImagePlus](#SaveImagePlus) node,It can customize the directory where the picture is saved, add a timestamp to the file name, select the save format, set the image compression rate, set whether to save the workflow, and optionally add invisible watermarks to the picture. +* Commit [AddBlindWaterMark](#AddBlindWaterMark), [ShowBlindWaterMark](#ShowBlindWaterMark) nodes, Add invisible watermark and decoded watermark to the picture. Commit [CreateQRCode](#CreateQRCode), [DecodeQRCode](#DecodeQRCode) nodes, It can generate two-dimensional code pictures and decode two-dimensional codes. * [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. @@ -1094,6 +1097,55 @@ Node Options: * purge_models: Unload all loaded models。 + +### SaveImagePlus +Enhanced save image node. You can customize the directory where the picture is saved, add a timestamp to the file name, select the save format, set the image compression rate, set whether to save the workflow, and optionally add invisible watermarks to the picture. (Add information in a way that is invisible to the naked eye, and use the ```ShowBlindWaterMark``` node to decode the watermark. ) + +Node Options: +![image](image/save_image_plus_node.png) +* iamge: The input image. +* custom_path: User-defined directory, enter the directory name in the correct format. If empty, it is saved in the default output directory of ComfyUI. Note that when the file is set to save to the user directory, the picture preview cannot be seen, which is normal. +* filename_prefix: The prefix of file name. +* timestamp: Timestamp the file name, opting for date, time to seconds, and time to milliseconds. +* format: The format of image save. Currently available in ```png``` and ```jpg```. Note that only png format is supported for RGBA mode pictures. +* quality: Image quality, the value range 10-100, the higher the value, the better the picture quality, the volume of the file also correspondingly increases. +* meta_data: Whether to save metadata, that is workflow information. Set this to false if you do not want the workflow to be leaked. +* blind_watermark: The text entered here (does not support multilingualism) will be converted into a QR code and saved as an invisible watermark. Use ```ShowBlindWaterMark``` node can decode watermarks. Note that pictures with watermarks are recommended to be saved in png format, and lower-quality jpg format will cause watermark information to be lost. + +### AddBlindWaterMark +![image](image/watermark_example.png) +Add an invisible watermark to a picture. Add the watermark image in a way that is invisible to the naked eye, and use the ```ShowBlindWaterMark``` node to decode the watermark. + +Node Options: +![image](image/add_blind_watermark_node.png) +* iamge: The input image. +* watermark_image: Watermark image. The image entered here will automatically be converted to a square black and white image as a watermark. It is recommended to use a QR code as a watermark. + + +### ShowBlindWaterMark +Decoding the invisible watermark added to the ```AddBlindWaterMark``` and ```SaveImagePlus``` nodes. +![image](image/show_blind_watermark_node.png) + + +### CreateQRCode +Generate a square QR code picture. + +Node Options: +![image](image/create_qrcode_node.png) +* size: The side length of image. +* border: The size of the border around the QR code, the larger the value, the wider the border. +* text: Enter the text content of the QR code here, and multi-language is not supported. + +### DecodeQRCode +Decoding the QR code. + +Node Options: +![image](image/decode_qrcode_node.png) +* image: The input QR code image. +* pre_blur: Pre-blurring, you can try to adjust this value for QR codes that are difficult to identify. + + + # LayerMask ![image](image/layermask_nodes.png) diff --git a/README_CN.MD b/README_CN.MD index cb3676a..56cf6cd 100644 --- a/README_CN.MD +++ b/README_CN.MD @@ -70,6 +70,9 @@ git clone https://github.com/chflame163/ComfyUI_LayerStyle.git ## 更新说明 **如果本插件更新后出现依赖包错误,请重新安装相关依赖包。 + +* 添加 [SaveImagePlus](#SaveImagePlus)节点,可自定义保存图片的目录,文件名增加时间戳,选择保存格式,设置图片压缩率,设置是否保存工作流,以及可选给图片添加隐形水印。 +* 添加 [AddBlindWaterMark](#AddBlindWaterMark), [ShowBlindWaterMark](#ShowBlindWaterMark)节点,为图片增加隐形水印和解码水印。添加 [CreateQRCode](#CreateQRCode), [DecodeQRCode](#DecodeQRCode)节点,可生成二维码图片和解码二维码。 * [ImageScaleRestoreV2](#ImageScaleRestoreV2), [ImageScaleByAspectRatioV2](#ImageScaleByAspectRatioV2), [ImageAutoCropV2](#ImageAutoCropV2)节点增加```width```和```height```选项,可指定宽度或高度为固定值。 * 添加 [PurgeVRAM](#PurgeVRAM) 节点, 清理显存和内存。 * 添加 [AutoAdjust](#AutoAdjust) 节点, 自动调整图片对比度和白平衡。 @@ -1083,6 +1086,55 @@ cropped_mask: 裁切后的遮罩。 * purge_models: 清理已加载的模型。 +### SaveImagePlus +增强版的保存图片节点。可自定义保存图片的目录,文件名增加时间戳,选择保存格式,设置图片压缩率,设置是否保存工作流,以及可选给图片添加隐形水印。(以肉眼无法觉察的方式添加信息,使用配套的```ShowBlindWaterMark```节点可以解码水印。) + +节点选项说明: +![image](image/save_image_plus_node.png) +* iamge: 输入的图片。 +* custom_path: 用户自定义目录,请按正确的格式输入目录名。如果为空则保存在ComfyUI默认的output目录。注意当文件被设置为保存到用户目录时,无法看到图片预览,这是正常现象。 +* filename_prefix:文件名前缀。 +* timestamp: 为文件名加上时间戳,可选择日期、时间到秒和时间到毫秒。 +* format:图片保存格式。目前提供png和jpg两种。注意RGBA模式的图片仅支持png格式。 +* quality:图片质量,数值范围10-100,数值越高,图片质量越好,文件的体积也对应增大。 +* meta_data:是否保存元数据即工作流信息。如果不希望泄露工作流,请把这里设置为false。 +* blind_watermark:这里输入的文字(不支持多语言)将被转换为二维码作为隐形水印保存,使用```ShowBlindWaterMark```节点可以解码水印。注意有水印的图片建议保存为png格式,质量较低的jpg格式将导致水印信息丢失。 + +### AddBlindWaterMark +![image](image/watermark_example.png) +给图片添加隐形水印。以肉眼无法觉察的方式添加水印图片,使用```ShowBlindWaterMark```节点可以解码水印。 + +节点选项说明: +![image](image/add_blind_watermark_node.png) +* iamge: 输入的图片。 +* watermark_image: 水印图片。这里输入的图片将自动转为正方形的黑白图片作为水印。建议使用二维码作为水印。 + + +### ShowBlindWaterMark +对```AddBlindWaterMark``` 和 ```SaveImagePlus``` 节点添加的隐形水印解码。 +![image](image/show_blind_watermark_node.png) + + +### CreateQRCode +生成一个正方形的二维码图片。 + +节点选项说明: +![image](image/create_qrcode_node.png) +* size: 生成图片的边长。 +* border: 二维码四周边框的大小,数值越大,边框越宽。 +* text: 这里输入二维码文字内容,不支持多语言。 + +### DecodeQRCode +解码二维码。 + +节点选项说明: +![image](image/decode_qrcode_node.png) +* image: 输入二维码图片。 +* pre_blur: 预模糊,对难以识别的二维码可以尝试调整此数值。 + + + + # LayerMask ![image](image/layermask_nodes.png) diff --git a/image/HSV_node.jpg b/image/HSV_node.jpg new file mode 100644 index 0000000..17e1513 Binary files /dev/null and b/image/HSV_node.jpg differ diff --git a/image/HSV_node.png b/image/HSV_node.png deleted file mode 100644 index 61a6325..0000000 Binary files a/image/HSV_node.png and /dev/null differ diff --git a/image/LAB_node.jpg b/image/LAB_node.jpg new file mode 100644 index 0000000..9ca4cee Binary files /dev/null and b/image/LAB_node.jpg differ diff --git a/image/LAB_node.png b/image/LAB_node.png deleted file mode 100644 index cdfbf59..0000000 Binary files a/image/LAB_node.png and /dev/null differ diff --git a/image/RGB_node.jpg b/image/RGB_node.jpg new file mode 100644 index 0000000..7c4ec5a Binary files /dev/null and b/image/RGB_node.jpg differ diff --git a/image/RGB_node.png b/image/RGB_node.png deleted file mode 100644 index 41bffd1..0000000 Binary files a/image/RGB_node.png and /dev/null differ diff --git a/image/RGB_value_example.jpg b/image/RGB_value_example.jpg new file mode 100644 index 0000000..c6e1595 Binary files /dev/null and b/image/RGB_value_example.jpg differ diff --git a/image/RGB_value_example.png b/image/RGB_value_example.png deleted file mode 100644 index d6590f6..0000000 Binary files a/image/RGB_value_example.png and /dev/null differ diff --git a/image/YUV_node.jpg b/image/YUV_node.jpg new file mode 100644 index 0000000..1129798 Binary files /dev/null and b/image/YUV_node.jpg differ diff --git a/image/YUV_node.png b/image/YUV_node.png deleted file mode 100644 index 8ff49cc..0000000 Binary files a/image/YUV_node.png and /dev/null differ diff --git a/image/add_blind_watermark_node.jpg b/image/add_blind_watermark_node.jpg new file mode 100644 index 0000000..f2c95fb Binary files /dev/null and b/image/add_blind_watermark_node.jpg differ diff --git a/image/auto_adjust_example.jpg b/image/auto_adjust_example.jpg new file mode 100644 index 0000000..ccec70e Binary files /dev/null and b/image/auto_adjust_example.jpg differ diff --git a/image/auto_adjust_example.png b/image/auto_adjust_example.png deleted file mode 100644 index 806803d..0000000 Binary files a/image/auto_adjust_example.png and /dev/null differ diff --git a/image/auto_adjust_node.jpg b/image/auto_adjust_node.jpg new file mode 100644 index 0000000..3ac9828 Binary files /dev/null and b/image/auto_adjust_node.jpg differ diff --git a/image/auto_adjust_node.png b/image/auto_adjust_node.png deleted file mode 100644 index 0b44bfb..0000000 Binary files a/image/auto_adjust_node.png and /dev/null differ diff --git a/image/auto_brightness_example.jpg b/image/auto_brightness_example.jpg new file mode 100644 index 0000000..368ca93 Binary files /dev/null and b/image/auto_brightness_example.jpg differ diff --git a/image/auto_brightness_example.png b/image/auto_brightness_example.png deleted file mode 100644 index d5e76aa..0000000 Binary files a/image/auto_brightness_example.png and /dev/null differ diff --git a/image/auto_brightness_node.jpg b/image/auto_brightness_node.jpg new file mode 100644 index 0000000..0d108b3 Binary files /dev/null and b/image/auto_brightness_node.jpg differ diff --git a/image/auto_brightness_node.png b/image/auto_brightness_node.png deleted file mode 100644 index 38ef795..0000000 Binary files a/image/auto_brightness_node.png and /dev/null differ diff --git a/image/birefnet_ultra_example.jpg b/image/birefnet_ultra_example.jpg new file mode 100644 index 0000000..7ec3f83 Binary files /dev/null and b/image/birefnet_ultra_example.jpg differ diff --git a/image/birefnet_ultra_example.png b/image/birefnet_ultra_example.png deleted file mode 100644 index e56b3c1..0000000 Binary files a/image/birefnet_ultra_example.png and /dev/null differ diff --git a/image/birefnet_ultra_node.jpg b/image/birefnet_ultra_node.jpg new file mode 100644 index 0000000..10ee79b Binary files /dev/null and b/image/birefnet_ultra_node.jpg differ diff --git a/image/birefnet_ultra_node.png b/image/birefnet_ultra_node.png deleted file mode 100644 index 5d52281..0000000 Binary files a/image/birefnet_ultra_node.png and /dev/null differ diff --git a/image/blend_mode_result.jpg b/image/blend_mode_result.jpg new file mode 100644 index 0000000..732d7b8 Binary files /dev/null and b/image/blend_mode_result.jpg differ diff --git a/image/blend_mode_result.png b/image/blend_mode_result.png deleted file mode 100644 index 64c955c..0000000 Binary files a/image/blend_mode_result.png and /dev/null differ diff --git a/image/blend_mode_v2_example.jpg b/image/blend_mode_v2_example.jpg new file mode 100644 index 0000000..b2fbaad Binary files /dev/null and b/image/blend_mode_v2_example.jpg differ diff --git a/image/blend_mode_v2_example.png b/image/blend_mode_v2_example.png deleted file mode 100644 index a8e8043..0000000 Binary files a/image/blend_mode_v2_example.png and /dev/null differ diff --git a/image/blendif_mask_example.jpg b/image/blendif_mask_example.jpg new file mode 100644 index 0000000..fc71239 Binary files /dev/null and b/image/blendif_mask_example.jpg differ diff --git a/image/blendif_mask_example.png b/image/blendif_mask_example.png deleted file mode 100644 index 95c8351..0000000 Binary files a/image/blendif_mask_example.png and /dev/null differ diff --git a/image/blendif_mask_node.jpg b/image/blendif_mask_node.jpg new file mode 100644 index 0000000..c2cbc01 Binary files /dev/null and b/image/blendif_mask_node.jpg differ diff --git a/image/blendif_mask_node.png b/image/blendif_mask_node.png deleted file mode 100644 index d7f0f48..0000000 Binary files a/image/blendif_mask_node.png and /dev/null differ diff --git a/image/boolean_node.jpg b/image/boolean_node.jpg new file mode 100644 index 0000000..2c749e8 Binary files /dev/null and b/image/boolean_node.jpg differ diff --git a/image/boolean_node.png b/image/boolean_node.png deleted file mode 100644 index eb1e2ab..0000000 Binary files a/image/boolean_node.png and /dev/null differ diff --git a/image/boolean_operator_node.jpg b/image/boolean_operator_node.jpg new file mode 100644 index 0000000..3b734d5 Binary files /dev/null and b/image/boolean_operator_node.jpg differ diff --git a/image/boolean_operator_node.png b/image/boolean_operator_node.png deleted file mode 100644 index f3ff1e3..0000000 Binary files a/image/boolean_operator_node.png and /dev/null differ diff --git a/image/brightness_&_contrast_node.jpg b/image/brightness_&_contrast_node.jpg new file mode 100644 index 0000000..f32c9d8 Binary files /dev/null and b/image/brightness_&_contrast_node.jpg differ diff --git a/image/brightness_&_contrast_node.png b/image/brightness_&_contrast_node.png deleted file mode 100644 index ff65225..0000000 Binary files a/image/brightness_&_contrast_node.png and /dev/null differ diff --git a/image/channel_shake_example.jpg b/image/channel_shake_example.jpg new file mode 100644 index 0000000..f76f904 Binary files /dev/null and b/image/channel_shake_example.jpg differ diff --git a/image/channel_shake_example.png b/image/channel_shake_example.png deleted file mode 100644 index 0a55b1f..0000000 Binary files a/image/channel_shake_example.png and /dev/null differ diff --git a/image/channel_shake_node.jpg b/image/channel_shake_node.jpg new file mode 100644 index 0000000..2879dea Binary files /dev/null and b/image/channel_shake_node.jpg differ diff --git a/image/channel_shake_node.png b/image/channel_shake_node.png deleted file mode 100644 index e7a2391..0000000 Binary files a/image/channel_shake_node.png and /dev/null differ diff --git a/image/color_adapter_example.jpg b/image/color_adapter_example.jpg new file mode 100644 index 0000000..08a17e3 Binary files /dev/null and b/image/color_adapter_example.jpg differ diff --git a/image/color_adapter_example.png b/image/color_adapter_example.png deleted file mode 100644 index cfddfcb..0000000 Binary files a/image/color_adapter_example.png and /dev/null differ diff --git a/image/color_adapter_node.jpg b/image/color_adapter_node.jpg new file mode 100644 index 0000000..3c41662 Binary files /dev/null and b/image/color_adapter_node.jpg differ diff --git a/image/color_adapter_node.png b/image/color_adapter_node.png deleted file mode 100644 index a48b1b7..0000000 Binary files a/image/color_adapter_node.png and /dev/null differ diff --git a/image/color_balance_example.jpg b/image/color_balance_example.jpg new file mode 100644 index 0000000..e019e68 Binary files /dev/null and b/image/color_balance_example.jpg differ diff --git a/image/color_balance_example.png b/image/color_balance_example.png deleted file mode 100644 index 33a63c5..0000000 Binary files a/image/color_balance_example.png and /dev/null differ diff --git a/image/color_balance_node.jpg b/image/color_balance_node.jpg new file mode 100644 index 0000000..aeaa81e Binary files /dev/null and b/image/color_balance_node.jpg differ diff --git a/image/color_balance_node.png b/image/color_balance_node.png deleted file mode 100644 index f1e5bd4..0000000 Binary files a/image/color_balance_node.png and /dev/null differ diff --git a/image/color_image_example.jpg b/image/color_image_example.jpg new file mode 100644 index 0000000..fe6567a Binary files /dev/null and b/image/color_image_example.jpg differ diff --git a/image/color_image_example.png b/image/color_image_example.png deleted file mode 100644 index 211a03b..0000000 Binary files a/image/color_image_example.png and /dev/null differ diff --git a/image/color_image_node.jpg b/image/color_image_node.jpg new file mode 100644 index 0000000..38b4477 Binary files /dev/null and b/image/color_image_node.jpg differ diff --git a/image/color_image_node.png b/image/color_image_node.png deleted file mode 100644 index 8f2e92f..0000000 Binary files a/image/color_image_node.png and /dev/null differ diff --git a/image/color_image_v2_node.jpg b/image/color_image_v2_node.jpg new file mode 100644 index 0000000..c343475 Binary files /dev/null and b/image/color_image_v2_node.jpg differ diff --git a/image/color_image_v2_node.png b/image/color_image_v2_node.png deleted file mode 100644 index 119bfd1..0000000 Binary files a/image/color_image_v2_node.png and /dev/null differ diff --git a/image/color_map_node.jpg b/image/color_map_node.jpg new file mode 100644 index 0000000..99fd5f9 Binary files /dev/null and b/image/color_map_node.jpg differ diff --git a/image/color_map_node.png b/image/color_map_node.png deleted file mode 100644 index ad0bfc6..0000000 Binary files a/image/color_map_node.png and /dev/null differ diff --git a/image/color_of_shadow_and_highlight_example.jpg b/image/color_of_shadow_and_highlight_example.jpg new file mode 100644 index 0000000..49973b9 Binary files /dev/null and b/image/color_of_shadow_and_highlight_example.jpg differ diff --git a/image/color_of_shadow_and_highlight_example.png b/image/color_of_shadow_and_highlight_example.png deleted file mode 100644 index 6ae0cd1..0000000 Binary files a/image/color_of_shadow_and_highlight_example.png and /dev/null differ diff --git a/image/color_of_shadow_and_highlight_node.jpg b/image/color_of_shadow_and_highlight_node.jpg new file mode 100644 index 0000000..b7e695a Binary files /dev/null and b/image/color_of_shadow_and_highlight_node.jpg differ diff --git a/image/color_of_shadow_and_highlight_node.png b/image/color_of_shadow_and_highlight_node.png deleted file mode 100644 index eda217e..0000000 Binary files a/image/color_of_shadow_and_highlight_node.png and /dev/null differ diff --git a/image/color_overlay_example.jpg b/image/color_overlay_example.jpg new file mode 100644 index 0000000..99c2ef1 Binary files /dev/null and b/image/color_overlay_example.jpg differ diff --git a/image/color_overlay_example.png b/image/color_overlay_example.png deleted file mode 100644 index 01eca7a..0000000 Binary files a/image/color_overlay_example.png and /dev/null differ diff --git a/image/color_overlay_node.jpg b/image/color_overlay_node.jpg new file mode 100644 index 0000000..2a9b38a Binary files /dev/null and b/image/color_overlay_node.jpg differ diff --git a/image/color_overlay_node.png b/image/color_overlay_node.png deleted file mode 100644 index 367dcff..0000000 Binary files a/image/color_overlay_node.png and /dev/null differ diff --git a/image/color_picker.jpg b/image/color_picker.jpg new file mode 100644 index 0000000..7323337 Binary files /dev/null and b/image/color_picker.jpg differ diff --git a/image/color_picker.png b/image/color_picker.png deleted file mode 100644 index 6bade89..0000000 Binary files a/image/color_picker.png and /dev/null differ diff --git a/image/color_temperature_example.jpg b/image/color_temperature_example.jpg new file mode 100644 index 0000000..3e93e0e Binary files /dev/null and b/image/color_temperature_example.jpg differ diff --git a/image/color_temperature_example.png b/image/color_temperature_example.png deleted file mode 100644 index 9447311..0000000 Binary files a/image/color_temperature_example.png and /dev/null differ diff --git a/image/color_temperature_node.jpg b/image/color_temperature_node.jpg new file mode 100644 index 0000000..faa7f78 Binary files /dev/null and b/image/color_temperature_node.jpg differ diff --git a/image/color_temperature_node.png b/image/color_temperature_node.png deleted file mode 100644 index 90c20a8..0000000 Binary files a/image/color_temperature_node.png and /dev/null differ diff --git a/image/colormap_result.jpg b/image/colormap_result.jpg new file mode 100644 index 0000000..2a7ea28 Binary files /dev/null and b/image/colormap_result.jpg differ diff --git a/image/colormap_result.png b/image/colormap_result.png deleted file mode 100644 index 3e42aa8..0000000 Binary files a/image/colormap_result.png and /dev/null differ diff --git a/image/corp_box_resolve_node.jpg b/image/corp_box_resolve_node.jpg new file mode 100644 index 0000000..66fe0d3 Binary files /dev/null and b/image/corp_box_resolve_node.jpg differ diff --git a/image/corp_box_resolve_node.png b/image/corp_box_resolve_node.png deleted file mode 100644 index 718beee..0000000 Binary files a/image/corp_box_resolve_node.png and /dev/null differ diff --git a/image/corp_by_mask_example.jpg b/image/corp_by_mask_example.jpg new file mode 100644 index 0000000..43e1efb Binary files /dev/null and b/image/corp_by_mask_example.jpg differ diff --git a/image/corp_by_mask_example.png b/image/corp_by_mask_example.png deleted file mode 100644 index 595f799..0000000 Binary files a/image/corp_by_mask_example.png and /dev/null differ diff --git a/image/corp_by_mask_node.jpg b/image/corp_by_mask_node.jpg new file mode 100644 index 0000000..a02cefe Binary files /dev/null and b/image/corp_by_mask_node.jpg differ diff --git a/image/corp_by_mask_node.png b/image/corp_by_mask_node.png deleted file mode 100644 index 41f803a..0000000 Binary files a/image/corp_by_mask_node.png and /dev/null differ diff --git a/image/corp_by_mask_v2_node.jpg b/image/corp_by_mask_v2_node.jpg new file mode 100644 index 0000000..bb5ba7e Binary files /dev/null and b/image/corp_by_mask_v2_node.jpg differ diff --git a/image/corp_by_mask_v2_node.png b/image/corp_by_mask_v2_node.png deleted file mode 100644 index 1c4d9b8..0000000 Binary files a/image/corp_by_mask_v2_node.png and /dev/null differ diff --git a/image/create_gradient_mask_example.jpg b/image/create_gradient_mask_example.jpg new file mode 100644 index 0000000..df04384 Binary files /dev/null and b/image/create_gradient_mask_example.jpg differ diff --git a/image/create_gradient_mask_example.png b/image/create_gradient_mask_example.png deleted file mode 100644 index 2502a1d..0000000 Binary files a/image/create_gradient_mask_example.png and /dev/null differ diff --git a/image/create_gradient_mask_example2.jpg b/image/create_gradient_mask_example2.jpg new file mode 100644 index 0000000..d3a7876 Binary files /dev/null and b/image/create_gradient_mask_example2.jpg differ diff --git a/image/create_gradient_mask_example2.png b/image/create_gradient_mask_example2.png deleted file mode 100644 index a1652dd..0000000 Binary files a/image/create_gradient_mask_example2.png and /dev/null differ diff --git a/image/create_gradient_mask_node.jpg b/image/create_gradient_mask_node.jpg new file mode 100644 index 0000000..16e01db Binary files /dev/null and b/image/create_gradient_mask_node.jpg differ diff --git a/image/create_gradient_mask_node.png b/image/create_gradient_mask_node.png deleted file mode 100644 index 449fe35..0000000 Binary files a/image/create_gradient_mask_node.png and /dev/null differ diff --git a/image/create_qrcode_node.jpg b/image/create_qrcode_node.jpg new file mode 100644 index 0000000..87d1a17 Binary files /dev/null and b/image/create_qrcode_node.jpg differ diff --git a/image/data_nodes_example.jpg b/image/data_nodes_example.jpg new file mode 100644 index 0000000..6995c09 Binary files /dev/null and b/image/data_nodes_example.jpg differ diff --git a/image/data_nodes_example.png b/image/data_nodes_example.png deleted file mode 100644 index c17bc75..0000000 Binary files a/image/data_nodes_example.png and /dev/null differ diff --git a/image/decode_qrcode_node.jpg b/image/decode_qrcode_node.jpg new file mode 100644 index 0000000..569814d Binary files /dev/null and b/image/decode_qrcode_node.jpg differ diff --git a/image/drop_shadow_example.jpg b/image/drop_shadow_example.jpg new file mode 100644 index 0000000..f21fe18 Binary files /dev/null and b/image/drop_shadow_example.jpg differ diff --git a/image/drop_shadow_example.png b/image/drop_shadow_example.png deleted file mode 100644 index 4c64938..0000000 Binary files a/image/drop_shadow_example.png and /dev/null differ diff --git a/image/drop_shadow_node.jpg b/image/drop_shadow_node.jpg new file mode 100644 index 0000000..04c8589 Binary files /dev/null and b/image/drop_shadow_node.jpg differ diff --git a/image/drop_shadow_node.png b/image/drop_shadow_node.png deleted file mode 100644 index c481aff..0000000 Binary files a/image/drop_shadow_node.png and /dev/null differ diff --git a/image/exposure_example.jpg b/image/exposure_example.jpg new file mode 100644 index 0000000..79f6bc2 Binary files /dev/null and b/image/exposure_example.jpg differ diff --git a/image/exposure_example.png b/image/exposure_example.png deleted file mode 100644 index d70b598..0000000 Binary files a/image/exposure_example.png and /dev/null differ diff --git a/image/extend_canvas_example.jpg b/image/extend_canvas_example.jpg new file mode 100644 index 0000000..7e15756 Binary files /dev/null and b/image/extend_canvas_example.jpg differ diff --git a/image/extend_canvas_example.png b/image/extend_canvas_example.png deleted file mode 100644 index cc65b2e..0000000 Binary files a/image/extend_canvas_example.png and /dev/null differ diff --git a/image/extend_canvas_node.jpg b/image/extend_canvas_node.jpg new file mode 100644 index 0000000..743b68d Binary files /dev/null and b/image/extend_canvas_node.jpg differ diff --git a/image/extend_canvas_node.png b/image/extend_canvas_node.png deleted file mode 100644 index 2dc01e5..0000000 Binary files a/image/extend_canvas_node.png and /dev/null differ diff --git a/image/extend_canvas_v2_node.jpg b/image/extend_canvas_v2_node.jpg new file mode 100644 index 0000000..99873a7 Binary files /dev/null and b/image/extend_canvas_v2_node.jpg differ diff --git a/image/extend_canvas_v2_node.png b/image/extend_canvas_v2_node.png deleted file mode 100644 index ab220c3..0000000 Binary files a/image/extend_canvas_v2_node.png and /dev/null differ diff --git a/image/film_example.jpg b/image/film_example.jpg new file mode 100644 index 0000000..1e59ce7 Binary files /dev/null and b/image/film_example.jpg differ diff --git a/image/film_example.png b/image/film_example.png deleted file mode 100644 index 50e706b..0000000 Binary files a/image/film_example.png and /dev/null differ diff --git a/image/film_node.jpg b/image/film_node.jpg new file mode 100644 index 0000000..19e8312 Binary files /dev/null and b/image/film_node.jpg differ diff --git a/image/film_node.png b/image/film_node.png deleted file mode 100644 index e386990..0000000 Binary files a/image/film_node.png and /dev/null differ diff --git a/image/float_node.jpg b/image/float_node.jpg new file mode 100644 index 0000000..13509d6 Binary files /dev/null and b/image/float_node.jpg differ diff --git a/image/float_node.png b/image/float_node.png deleted file mode 100644 index fd9190e..0000000 Binary files a/image/float_node.png and /dev/null differ diff --git a/image/gamma_node.jpg b/image/gamma_node.jpg new file mode 100644 index 0000000..9c34762 Binary files /dev/null and b/image/gamma_node.jpg differ diff --git a/image/gamma_node.png b/image/gamma_node.png deleted file mode 100644 index e15210b..0000000 Binary files a/image/gamma_node.png and /dev/null differ diff --git a/image/gaussian_blur_example.jpg b/image/gaussian_blur_example.jpg new file mode 100644 index 0000000..1fc3533 Binary files /dev/null and b/image/gaussian_blur_example.jpg differ diff --git a/image/gaussian_blur_example.png b/image/gaussian_blur_example.png deleted file mode 100644 index 9f1730f..0000000 Binary files a/image/gaussian_blur_example.png and /dev/null differ diff --git a/image/get_color_tone_example.jpg b/image/get_color_tone_example.jpg new file mode 100644 index 0000000..a3dbaad Binary files /dev/null and b/image/get_color_tone_example.jpg differ diff --git a/image/get_color_tone_example.png b/image/get_color_tone_example.png deleted file mode 100644 index d9f9571..0000000 Binary files a/image/get_color_tone_example.png and /dev/null differ diff --git a/image/get_color_tone_node.jpg b/image/get_color_tone_node.jpg new file mode 100644 index 0000000..197dc95 Binary files /dev/null and b/image/get_color_tone_node.jpg differ diff --git a/image/get_color_tone_node.png b/image/get_color_tone_node.png deleted file mode 100644 index 57c2fff..0000000 Binary files a/image/get_color_tone_node.png and /dev/null differ diff --git a/image/get_color_tone_v2_example.jpg b/image/get_color_tone_v2_example.jpg new file mode 100644 index 0000000..15ffef1 Binary files /dev/null and b/image/get_color_tone_v2_example.jpg differ diff --git a/image/get_color_tone_v2_example.png b/image/get_color_tone_v2_example.png deleted file mode 100644 index d635fd2..0000000 Binary files a/image/get_color_tone_v2_example.png and /dev/null differ diff --git a/image/get_color_tone_v2_node.jpg b/image/get_color_tone_v2_node.jpg new file mode 100644 index 0000000..8717c99 Binary files /dev/null and b/image/get_color_tone_v2_node.jpg differ diff --git a/image/get_color_tone_v2_node.png b/image/get_color_tone_v2_node.png deleted file mode 100644 index 9504705..0000000 Binary files a/image/get_color_tone_v2_node.png and /dev/null differ diff --git a/image/get_image_size_node.jpg b/image/get_image_size_node.jpg new file mode 100644 index 0000000..419e0bf Binary files /dev/null and b/image/get_image_size_node.jpg differ diff --git a/image/get_image_size_node.png b/image/get_image_size_node.png deleted file mode 100644 index f8bc6cf..0000000 Binary files a/image/get_image_size_node.png and /dev/null differ diff --git a/image/gradient_image_example.jpg b/image/gradient_image_example.jpg new file mode 100644 index 0000000..c8ced06 Binary files /dev/null and b/image/gradient_image_example.jpg differ diff --git a/image/gradient_image_example.png b/image/gradient_image_example.png deleted file mode 100644 index b77184d..0000000 Binary files a/image/gradient_image_example.png and /dev/null differ diff --git a/image/gradient_image_node.jpg b/image/gradient_image_node.jpg new file mode 100644 index 0000000..e86c332 Binary files /dev/null and b/image/gradient_image_node.jpg differ diff --git a/image/gradient_image_node.png b/image/gradient_image_node.png deleted file mode 100644 index 83ceb77..0000000 Binary files a/image/gradient_image_node.png and /dev/null differ diff --git a/image/gradient_image_node_v2.jpg b/image/gradient_image_node_v2.jpg new file mode 100644 index 0000000..ba2a313 Binary files /dev/null and b/image/gradient_image_node_v2.jpg differ diff --git a/image/gradient_image_node_v2.png b/image/gradient_image_node_v2.png deleted file mode 100644 index cca747d..0000000 Binary files a/image/gradient_image_node_v2.png and /dev/null differ diff --git a/image/gradient_overlay_example.jpg b/image/gradient_overlay_example.jpg new file mode 100644 index 0000000..7bcb141 Binary files /dev/null and b/image/gradient_overlay_example.jpg differ diff --git a/image/gradient_overlay_example.png b/image/gradient_overlay_example.png deleted file mode 100644 index a3ecc9c..0000000 Binary files a/image/gradient_overlay_example.png and /dev/null differ diff --git a/image/gradient_overlay_node.jpg b/image/gradient_overlay_node.jpg new file mode 100644 index 0000000..59d4d63 Binary files /dev/null and b/image/gradient_overlay_node.jpg differ diff --git a/image/gradient_overlay_node.png b/image/gradient_overlay_node.png deleted file mode 100644 index 2c7feb3..0000000 Binary files a/image/gradient_overlay_node.png and /dev/null differ diff --git a/image/hdr_effects_example.jpg b/image/hdr_effects_example.jpg new file mode 100644 index 0000000..bc09611 Binary files /dev/null and b/image/hdr_effects_example.jpg differ diff --git a/image/hdr_effects_example.png b/image/hdr_effects_example.png deleted file mode 100644 index c205f52..0000000 Binary files a/image/hdr_effects_example.png and /dev/null differ diff --git a/image/hdr_effects_node.jpg b/image/hdr_effects_node.jpg new file mode 100644 index 0000000..7460d41 Binary files /dev/null and b/image/hdr_effects_node.jpg differ diff --git a/image/hdr_effects_node.png b/image/hdr_effects_node.png deleted file mode 100644 index fa4e7dc..0000000 Binary files a/image/hdr_effects_node.png and /dev/null differ diff --git a/image/image_auto_crop_example.jpg b/image/image_auto_crop_example.jpg new file mode 100644 index 0000000..59377b9 Binary files /dev/null and b/image/image_auto_crop_example.jpg differ diff --git a/image/image_auto_crop_example.png b/image/image_auto_crop_example.png deleted file mode 100644 index 7f6d23a..0000000 Binary files a/image/image_auto_crop_example.png and /dev/null differ diff --git a/image/image_auto_crop_node.jpg b/image/image_auto_crop_node.jpg new file mode 100644 index 0000000..d3d2f83 Binary files /dev/null and b/image/image_auto_crop_node.jpg differ diff --git a/image/image_auto_crop_node.png b/image/image_auto_crop_node.png deleted file mode 100644 index 9763d02..0000000 Binary files a/image/image_auto_crop_node.png and /dev/null differ diff --git a/image/image_auto_crop_v2_node.jpg b/image/image_auto_crop_v2_node.jpg new file mode 100644 index 0000000..8420c78 Binary files /dev/null and b/image/image_auto_crop_v2_node.jpg differ diff --git a/image/image_auto_crop_v2_node.png b/image/image_auto_crop_v2_node.png deleted file mode 100644 index d0f7e00..0000000 Binary files a/image/image_auto_crop_v2_node.png and /dev/null differ diff --git a/image/image_blend_advance_example.jpg b/image/image_blend_advance_example.jpg new file mode 100644 index 0000000..a28a6ab Binary files /dev/null and b/image/image_blend_advance_example.jpg differ diff --git a/image/image_blend_advance_example.png b/image/image_blend_advance_example.png deleted file mode 100644 index f2954a2..0000000 Binary files a/image/image_blend_advance_example.png and /dev/null differ diff --git a/image/image_blend_advance_node.jpg b/image/image_blend_advance_node.jpg new file mode 100644 index 0000000..88c33e6 Binary files /dev/null and b/image/image_blend_advance_node.jpg differ diff --git a/image/image_blend_advance_node.png b/image/image_blend_advance_node.png deleted file mode 100644 index 04879c2..0000000 Binary files a/image/image_blend_advance_node.png and /dev/null differ diff --git a/image/image_blend_example.jpg b/image/image_blend_example.jpg new file mode 100644 index 0000000..ee8751d Binary files /dev/null and b/image/image_blend_example.jpg differ diff --git a/image/image_blend_example.png b/image/image_blend_example.png deleted file mode 100644 index 519e77e..0000000 Binary files a/image/image_blend_example.png and /dev/null differ diff --git a/image/image_blend_node.jpg b/image/image_blend_node.jpg new file mode 100644 index 0000000..e6a32fe Binary files /dev/null and b/image/image_blend_node.jpg differ diff --git a/image/image_blend_node.png b/image/image_blend_node.png deleted file mode 100644 index 04da7eb..0000000 Binary files a/image/image_blend_node.png and /dev/null differ diff --git a/image/image_channel_merge_example.jpg b/image/image_channel_merge_example.jpg new file mode 100644 index 0000000..f7ba676 Binary files /dev/null and b/image/image_channel_merge_example.jpg differ diff --git a/image/image_channel_merge_example.png b/image/image_channel_merge_example.png deleted file mode 100644 index 7d8f88d..0000000 Binary files a/image/image_channel_merge_example.png and /dev/null differ diff --git a/image/image_channel_merge_node.jpg b/image/image_channel_merge_node.jpg new file mode 100644 index 0000000..7607ae7 Binary files /dev/null and b/image/image_channel_merge_node.jpg differ diff --git a/image/image_channel_merge_node.png b/image/image_channel_merge_node.png deleted file mode 100644 index 80c8605..0000000 Binary files a/image/image_channel_merge_node.png and /dev/null differ diff --git a/image/image_channel_split_example.jpg b/image/image_channel_split_example.jpg new file mode 100644 index 0000000..9410d4c Binary files /dev/null and b/image/image_channel_split_example.jpg differ diff --git a/image/image_channel_split_example.png b/image/image_channel_split_example.png deleted file mode 100644 index 5deb1d6..0000000 Binary files a/image/image_channel_split_example.png and /dev/null differ diff --git a/image/image_channel_split_node.jpg b/image/image_channel_split_node.jpg new file mode 100644 index 0000000..e2e694f Binary files /dev/null and b/image/image_channel_split_node.jpg differ diff --git a/image/image_channel_split_node.png b/image/image_channel_split_node.png deleted file mode 100644 index 3def086..0000000 Binary files a/image/image_channel_split_node.png and /dev/null differ diff --git a/image/image_combine_alpha_node.jpg b/image/image_combine_alpha_node.jpg new file mode 100644 index 0000000..9544553 Binary files /dev/null and b/image/image_combine_alpha_node.jpg differ diff --git a/image/image_combine_alpha_node.png b/image/image_combine_alpha_node.png deleted file mode 100644 index 3da0655..0000000 Binary files a/image/image_combine_alpha_node.png and /dev/null differ diff --git a/image/image_hub_example.jpg b/image/image_hub_example.jpg new file mode 100644 index 0000000..f3506b0 Binary files /dev/null and b/image/image_hub_example.jpg differ diff --git a/image/image_hub_example.png b/image/image_hub_example.png deleted file mode 100644 index a170b31..0000000 Binary files a/image/image_hub_example.png and /dev/null differ diff --git a/image/image_hub_node.jpg b/image/image_hub_node.jpg new file mode 100644 index 0000000..f315618 Binary files /dev/null and b/image/image_hub_node.jpg differ diff --git a/image/image_hub_node.png b/image/image_hub_node.png deleted file mode 100644 index 7fa5309..0000000 Binary files a/image/image_hub_node.png and /dev/null differ diff --git a/image/image_mask_scale_as_example.jpg b/image/image_mask_scale_as_example.jpg new file mode 100644 index 0000000..43710e0 Binary files /dev/null and b/image/image_mask_scale_as_example.jpg differ diff --git a/image/image_mask_scale_as_example.png b/image/image_mask_scale_as_example.png deleted file mode 100644 index d53426b..0000000 Binary files a/image/image_mask_scale_as_example.png and /dev/null differ diff --git a/image/image_mask_scale_as_node.jpg b/image/image_mask_scale_as_node.jpg new file mode 100644 index 0000000..d008110 Binary files /dev/null and b/image/image_mask_scale_as_node.jpg differ diff --git a/image/image_mask_scale_as_node.png b/image/image_mask_scale_as_node.png deleted file mode 100644 index dd6f5e1..0000000 Binary files a/image/image_mask_scale_as_node.png and /dev/null differ diff --git a/image/image_opacity_example.jpg b/image/image_opacity_example.jpg new file mode 100644 index 0000000..a0212ea Binary files /dev/null and b/image/image_opacity_example.jpg differ diff --git a/image/image_opacity_example.png b/image/image_opacity_example.png deleted file mode 100644 index 29994b0..0000000 Binary files a/image/image_opacity_example.png and /dev/null differ diff --git a/image/image_remove_alpha_example.jpg b/image/image_remove_alpha_example.jpg new file mode 100644 index 0000000..7d25b49 Binary files /dev/null and b/image/image_remove_alpha_example.jpg differ diff --git a/image/image_remove_alpha_example.png b/image/image_remove_alpha_example.png deleted file mode 100644 index b5c542d..0000000 Binary files a/image/image_remove_alpha_example.png and /dev/null differ diff --git a/image/image_remove_alpha_node.jpg b/image/image_remove_alpha_node.jpg new file mode 100644 index 0000000..c43d624 Binary files /dev/null and b/image/image_remove_alpha_node.jpg differ diff --git a/image/image_remove_alpha_node.png b/image/image_remove_alpha_node.png deleted file mode 100644 index 0e48d71..0000000 Binary files a/image/image_remove_alpha_node.png and /dev/null differ diff --git a/image/image_reward_filter_example.jpg b/image/image_reward_filter_example.jpg new file mode 100644 index 0000000..1024b3e Binary files /dev/null and b/image/image_reward_filter_example.jpg differ diff --git a/image/image_reward_filter_example.png b/image/image_reward_filter_example.png deleted file mode 100644 index ddb633f..0000000 Binary files a/image/image_reward_filter_example.png and /dev/null differ diff --git a/image/image_reward_filter_node.jpg b/image/image_reward_filter_node.jpg new file mode 100644 index 0000000..8de28f8 Binary files /dev/null and b/image/image_reward_filter_node.jpg differ diff --git a/image/image_reward_filter_node.png b/image/image_reward_filter_node.png deleted file mode 100644 index 6251660..0000000 Binary files a/image/image_reward_filter_node.png and /dev/null differ diff --git a/image/image_scale_by_aspect_ratio_example.jpg b/image/image_scale_by_aspect_ratio_example.jpg new file mode 100644 index 0000000..fefc5bb Binary files /dev/null and b/image/image_scale_by_aspect_ratio_example.jpg differ diff --git a/image/image_scale_by_aspect_ratio_example.png b/image/image_scale_by_aspect_ratio_example.png deleted file mode 100644 index 9b0a137..0000000 Binary files a/image/image_scale_by_aspect_ratio_example.png and /dev/null differ diff --git a/image/image_scale_by_aspect_ratio_node.jpg b/image/image_scale_by_aspect_ratio_node.jpg new file mode 100644 index 0000000..5101253 Binary files /dev/null and b/image/image_scale_by_aspect_ratio_node.jpg differ diff --git a/image/image_scale_by_aspect_ratio_node.png b/image/image_scale_by_aspect_ratio_node.png deleted file mode 100644 index 9375f9b..0000000 Binary files a/image/image_scale_by_aspect_ratio_node.png and /dev/null differ diff --git a/image/image_scale_by_aspect_ratio_v2_node.jpg b/image/image_scale_by_aspect_ratio_v2_node.jpg new file mode 100644 index 0000000..faffd00 Binary files /dev/null and b/image/image_scale_by_aspect_ratio_v2_node.jpg differ diff --git a/image/image_scale_by_aspect_ratio_v2_node.png b/image/image_scale_by_aspect_ratio_v2_node.png deleted file mode 100644 index 33ce0c0..0000000 Binary files a/image/image_scale_by_aspect_ratio_v2_node.png and /dev/null differ diff --git a/image/image_scale_restore_example.jpg b/image/image_scale_restore_example.jpg new file mode 100644 index 0000000..f9f4992 Binary files /dev/null and b/image/image_scale_restore_example.jpg differ diff --git a/image/image_scale_restore_example.png b/image/image_scale_restore_example.png deleted file mode 100644 index ddfc58b..0000000 Binary files a/image/image_scale_restore_example.png and /dev/null differ diff --git a/image/image_scale_restore_node.jpg b/image/image_scale_restore_node.jpg new file mode 100644 index 0000000..76ee428 Binary files /dev/null and b/image/image_scale_restore_node.jpg differ diff --git a/image/image_scale_restore_node.png b/image/image_scale_restore_node.png deleted file mode 100644 index 6634f4b..0000000 Binary files a/image/image_scale_restore_node.png and /dev/null differ diff --git a/image/image_scale_restore_v2_node.jpg b/image/image_scale_restore_v2_node.jpg new file mode 100644 index 0000000..af76907 Binary files /dev/null and b/image/image_scale_restore_v2_node.jpg differ diff --git a/image/image_scale_restore_v2_node.png b/image/image_scale_restore_v2_node.png deleted file mode 100644 index 05f68d2..0000000 Binary files a/image/image_scale_restore_v2_node.png and /dev/null differ diff --git a/image/image_shift_example.jpg b/image/image_shift_example.jpg new file mode 100644 index 0000000..3f2c04e Binary files /dev/null and b/image/image_shift_example.jpg differ diff --git a/image/image_shift_example.png b/image/image_shift_example.png deleted file mode 100644 index 3d31901..0000000 Binary files a/image/image_shift_example.png and /dev/null differ diff --git a/image/image_shift_node.jpg b/image/image_shift_node.jpg new file mode 100644 index 0000000..3213b05 Binary files /dev/null and b/image/image_shift_node.jpg differ diff --git a/image/image_shift_node.png b/image/image_shift_node.png deleted file mode 100644 index c553f96..0000000 Binary files a/image/image_shift_node.png and /dev/null differ diff --git a/image/inner_glow_example.jpg b/image/inner_glow_example.jpg new file mode 100644 index 0000000..97f24f7 Binary files /dev/null and b/image/inner_glow_example.jpg differ diff --git a/image/inner_glow_example.png b/image/inner_glow_example.png deleted file mode 100644 index f7321c9..0000000 Binary files a/image/inner_glow_example.png and /dev/null differ diff --git a/image/inner_glow_node.jpg b/image/inner_glow_node.jpg new file mode 100644 index 0000000..edbe125 Binary files /dev/null and b/image/inner_glow_node.jpg differ diff --git a/image/inner_glow_node.png b/image/inner_glow_node.png deleted file mode 100644 index d65e06b..0000000 Binary files a/image/inner_glow_node.png and /dev/null differ diff --git a/image/inner_shadow_example.jpg b/image/inner_shadow_example.jpg new file mode 100644 index 0000000..a56312b Binary files /dev/null and b/image/inner_shadow_example.jpg differ diff --git a/image/inner_shadow_example.png b/image/inner_shadow_example.png deleted file mode 100644 index dd9f2d3..0000000 Binary files a/image/inner_shadow_example.png and /dev/null differ diff --git a/image/inner_shadow_node.jpg b/image/inner_shadow_node.jpg new file mode 100644 index 0000000..7650221 Binary files /dev/null and b/image/inner_shadow_node.jpg differ diff --git a/image/inner_shadow_node.png b/image/inner_shadow_node.png deleted file mode 100644 index 981eb66..0000000 Binary files a/image/inner_shadow_node.png and /dev/null differ diff --git a/image/integer_node.jpg b/image/integer_node.jpg new file mode 100644 index 0000000..24de5b3 Binary files /dev/null and b/image/integer_node.jpg differ diff --git a/image/integer_node.png b/image/integer_node.png deleted file mode 100644 index fb4f4e4..0000000 Binary files a/image/integer_node.png and /dev/null differ diff --git a/image/lama_example.jpg b/image/lama_example.jpg new file mode 100644 index 0000000..68f9e5e Binary files /dev/null and b/image/lama_example.jpg differ diff --git a/image/lama_example.png b/image/lama_example.png deleted file mode 100644 index bce050a..0000000 Binary files a/image/lama_example.png and /dev/null differ diff --git a/image/lama_node.jpg b/image/lama_node.jpg new file mode 100644 index 0000000..a870081 Binary files /dev/null and b/image/lama_node.jpg differ diff --git a/image/lama_node.png b/image/lama_node.png deleted file mode 100644 index 1264140..0000000 Binary files a/image/lama_node.png and /dev/null differ diff --git a/image/layer_image_transform_example.jpg b/image/layer_image_transform_example.jpg new file mode 100644 index 0000000..6252b6c Binary files /dev/null and b/image/layer_image_transform_example.jpg differ diff --git a/image/layer_image_transform_example.png b/image/layer_image_transform_example.png deleted file mode 100644 index bb805a4..0000000 Binary files a/image/layer_image_transform_example.png and /dev/null differ diff --git a/image/layer_image_transform_node.jpg b/image/layer_image_transform_node.jpg new file mode 100644 index 0000000..f1d9c61 Binary files /dev/null and b/image/layer_image_transform_node.jpg differ diff --git a/image/layer_image_transform_node.png b/image/layer_image_transform_node.png deleted file mode 100644 index 0cee284..0000000 Binary files a/image/layer_image_transform_node.png and /dev/null differ diff --git a/image/layer_mask_transform_node.jpg b/image/layer_mask_transform_node.jpg new file mode 100644 index 0000000..5cb7317 Binary files /dev/null and b/image/layer_mask_transform_node.jpg differ diff --git a/image/layer_mask_transform_node.png b/image/layer_mask_transform_node.png deleted file mode 100644 index cd3ff28..0000000 Binary files a/image/layer_mask_transform_node.png and /dev/null differ diff --git a/image/layercolor_nodes.jpg b/image/layercolor_nodes.jpg new file mode 100644 index 0000000..4e9f5ee Binary files /dev/null and b/image/layercolor_nodes.jpg differ diff --git a/image/layercolor_nodes.png b/image/layercolor_nodes.png deleted file mode 100644 index 867eb86..0000000 Binary files a/image/layercolor_nodes.png and /dev/null differ diff --git a/image/layercolor_title.jpg b/image/layercolor_title.jpg new file mode 100644 index 0000000..96b0ac0 Binary files /dev/null and b/image/layercolor_title.jpg differ diff --git a/image/layercolor_title.png b/image/layercolor_title.png deleted file mode 100644 index 727353b..0000000 Binary files a/image/layercolor_title.png and /dev/null differ diff --git a/image/layerfilter_nodes.jpg b/image/layerfilter_nodes.jpg new file mode 100644 index 0000000..b410b32 Binary files /dev/null and b/image/layerfilter_nodes.jpg differ diff --git a/image/layerfilter_nodes.png b/image/layerfilter_nodes.png deleted file mode 100644 index 51d9240..0000000 Binary files a/image/layerfilter_nodes.png and /dev/null differ diff --git a/image/layermask_nodes.jpg b/image/layermask_nodes.jpg new file mode 100644 index 0000000..be17cff Binary files /dev/null and b/image/layermask_nodes.jpg differ diff --git a/image/layermask_nodes.png b/image/layermask_nodes.png deleted file mode 100644 index 335386e..0000000 Binary files a/image/layermask_nodes.png and /dev/null differ diff --git a/image/layerstyle_nodes.jpg b/image/layerstyle_nodes.jpg new file mode 100644 index 0000000..b7f1307 Binary files /dev/null and b/image/layerstyle_nodes.jpg differ diff --git a/image/layerstyle_nodes.png b/image/layerstyle_nodes.png deleted file mode 100644 index 13c78f5..0000000 Binary files a/image/layerstyle_nodes.png and /dev/null differ diff --git a/image/layerstyle_title.jpg b/image/layerstyle_title.jpg new file mode 100644 index 0000000..d034b76 Binary files /dev/null and b/image/layerstyle_title.jpg differ diff --git a/image/layerstyle_title.png b/image/layerstyle_title.png deleted file mode 100644 index 8b6b846..0000000 Binary files a/image/layerstyle_title.png and /dev/null differ diff --git a/image/layerutility_nodes.jpg b/image/layerutility_nodes.jpg new file mode 100644 index 0000000..b67e407 Binary files /dev/null and b/image/layerutility_nodes.jpg differ diff --git a/image/layerutility_nodes.png b/image/layerutility_nodes.png deleted file mode 100644 index ec8e1ab..0000000 Binary files a/image/layerutility_nodes.png and /dev/null differ diff --git a/image/levels_example.jpg b/image/levels_example.jpg new file mode 100644 index 0000000..0c292ad Binary files /dev/null and b/image/levels_example.jpg differ diff --git a/image/levels_example.png b/image/levels_example.png deleted file mode 100644 index 3a9ee63..0000000 Binary files a/image/levels_example.png and /dev/null differ diff --git a/image/levels_node.jpg b/image/levels_node.jpg new file mode 100644 index 0000000..ffb5b68 Binary files /dev/null and b/image/levels_node.jpg differ diff --git a/image/levels_node.png b/image/levels_node.png deleted file mode 100644 index 871dfc8..0000000 Binary files a/image/levels_node.png and /dev/null differ diff --git a/image/light_leak_example.jpg b/image/light_leak_example.jpg new file mode 100644 index 0000000..bff5535 Binary files /dev/null and b/image/light_leak_example.jpg differ diff --git a/image/light_leak_example.png b/image/light_leak_example.png deleted file mode 100644 index 5d74f2a..0000000 Binary files a/image/light_leak_example.png and /dev/null differ diff --git a/image/light_leak_node.jpg b/image/light_leak_node.jpg new file mode 100644 index 0000000..597e1dd Binary files /dev/null and b/image/light_leak_node.jpg differ diff --git a/image/light_leak_node.png b/image/light_leak_node.png deleted file mode 100644 index 25c0bd4..0000000 Binary files a/image/light_leak_node.png and /dev/null differ diff --git a/image/lut_apply_example.jpg b/image/lut_apply_example.jpg new file mode 100644 index 0000000..659dc55 Binary files /dev/null and b/image/lut_apply_example.jpg differ diff --git a/image/lut_apply_example.png b/image/lut_apply_example.png deleted file mode 100644 index 71152ad..0000000 Binary files a/image/lut_apply_example.png and /dev/null differ diff --git a/image/lut_apply_node.jpg b/image/lut_apply_node.jpg new file mode 100644 index 0000000..181e589 Binary files /dev/null and b/image/lut_apply_node.jpg differ diff --git a/image/lut_apply_node.png b/image/lut_apply_node.png deleted file mode 100644 index c089c00..0000000 Binary files a/image/lut_apply_node.png and /dev/null differ diff --git a/image/mask_box_detect_example.jpg b/image/mask_box_detect_example.jpg new file mode 100644 index 0000000..8d5c4c9 Binary files /dev/null and b/image/mask_box_detect_example.jpg differ diff --git a/image/mask_box_detect_example.png b/image/mask_box_detect_example.png deleted file mode 100644 index ccbbc73..0000000 Binary files a/image/mask_box_detect_example.png and /dev/null differ diff --git a/image/mask_box_detect_node.jpg b/image/mask_box_detect_node.jpg new file mode 100644 index 0000000..46c586f Binary files /dev/null and b/image/mask_box_detect_node.jpg differ diff --git a/image/mask_box_detect_node.png b/image/mask_box_detect_node.png deleted file mode 100644 index 0180fcd..0000000 Binary files a/image/mask_box_detect_node.png and /dev/null differ diff --git a/image/mask_by_different_example.jpg b/image/mask_by_different_example.jpg new file mode 100644 index 0000000..f114ce4 Binary files /dev/null and b/image/mask_by_different_example.jpg differ diff --git a/image/mask_by_different_example.png b/image/mask_by_different_example.png deleted file mode 100644 index 1efd9d8..0000000 Binary files a/image/mask_by_different_example.png and /dev/null differ diff --git a/image/mask_by_different_node.jpg b/image/mask_by_different_node.jpg new file mode 100644 index 0000000..489db5d Binary files /dev/null and b/image/mask_by_different_node.jpg differ diff --git a/image/mask_by_different_node.png b/image/mask_by_different_node.png deleted file mode 100644 index 05212b6..0000000 Binary files a/image/mask_by_different_node.png and /dev/null differ diff --git a/image/mask_edge_compare.jpg b/image/mask_edge_compare.jpg new file mode 100644 index 0000000..fb52eb1 Binary files /dev/null and b/image/mask_edge_compare.jpg differ diff --git a/image/mask_edge_compare.png b/image/mask_edge_compare.png deleted file mode 100644 index 461ba9a..0000000 Binary files a/image/mask_edge_compare.png and /dev/null differ diff --git a/image/mask_edge_shrink_example.jpg b/image/mask_edge_shrink_example.jpg new file mode 100644 index 0000000..e74bc83 Binary files /dev/null and b/image/mask_edge_shrink_example.jpg differ diff --git a/image/mask_edge_shrink_example.png b/image/mask_edge_shrink_example.png deleted file mode 100644 index f6c04a4..0000000 Binary files a/image/mask_edge_shrink_example.png and /dev/null differ diff --git a/image/mask_edge_shrink_node.jpg b/image/mask_edge_shrink_node.jpg new file mode 100644 index 0000000..e10296b Binary files /dev/null and b/image/mask_edge_shrink_node.jpg differ diff --git a/image/mask_edge_shrink_node.png b/image/mask_edge_shrink_node.png deleted file mode 100644 index 6f5aeef..0000000 Binary files a/image/mask_edge_shrink_node.png and /dev/null differ diff --git a/image/mask_edge_ultra_detail_example.jpg b/image/mask_edge_ultra_detail_example.jpg new file mode 100644 index 0000000..16332d4 Binary files /dev/null and b/image/mask_edge_ultra_detail_example.jpg differ diff --git a/image/mask_edge_ultra_detail_example.png b/image/mask_edge_ultra_detail_example.png deleted file mode 100644 index 75651f4..0000000 Binary files a/image/mask_edge_ultra_detail_example.png and /dev/null differ diff --git a/image/mask_edge_ultra_detail_node.jpg b/image/mask_edge_ultra_detail_node.jpg new file mode 100644 index 0000000..7361f34 Binary files /dev/null and b/image/mask_edge_ultra_detail_node.jpg differ diff --git a/image/mask_edge_ultra_detail_node.png b/image/mask_edge_ultra_detail_node.png deleted file mode 100644 index f05d068..0000000 Binary files a/image/mask_edge_ultra_detail_node.png and /dev/null differ diff --git a/image/mask_edge_ultra_detail_v2_example.jpg b/image/mask_edge_ultra_detail_v2_example.jpg new file mode 100644 index 0000000..a888b6b Binary files /dev/null and b/image/mask_edge_ultra_detail_v2_example.jpg differ diff --git a/image/mask_edge_ultra_detail_v2_example.png b/image/mask_edge_ultra_detail_v2_example.png deleted file mode 100644 index 1116131..0000000 Binary files a/image/mask_edge_ultra_detail_v2_example.png and /dev/null differ diff --git a/image/mask_edge_ultra_detail_v2_node.jpg b/image/mask_edge_ultra_detail_v2_node.jpg new file mode 100644 index 0000000..d5e1f85 Binary files /dev/null and b/image/mask_edge_ultra_detail_v2_node.jpg differ diff --git a/image/mask_edge_ultra_detail_v2_node.png b/image/mask_edge_ultra_detail_v2_node.png deleted file mode 100644 index 506be01..0000000 Binary files a/image/mask_edge_ultra_detail_v2_node.png and /dev/null differ diff --git a/image/mask_gradient_example.jpg b/image/mask_gradient_example.jpg new file mode 100644 index 0000000..078a156 Binary files /dev/null and b/image/mask_gradient_example.jpg differ diff --git a/image/mask_gradient_example.png b/image/mask_gradient_example.png deleted file mode 100644 index 2cdcca1..0000000 Binary files a/image/mask_gradient_example.png and /dev/null differ diff --git a/image/mask_gradient_node.jpg b/image/mask_gradient_node.jpg new file mode 100644 index 0000000..3d01978 Binary files /dev/null and b/image/mask_gradient_node.jpg differ diff --git a/image/mask_gradient_node.png b/image/mask_gradient_node.png deleted file mode 100644 index fe3aa2d..0000000 Binary files a/image/mask_gradient_node.png and /dev/null differ diff --git a/image/mask_grow_example.jpg b/image/mask_grow_example.jpg new file mode 100644 index 0000000..be89c6d Binary files /dev/null and b/image/mask_grow_example.jpg differ diff --git a/image/mask_grow_example.png b/image/mask_grow_example.png deleted file mode 100644 index 5f23bc0..0000000 Binary files a/image/mask_grow_example.png and /dev/null differ diff --git a/image/mask_grow_node.jpg b/image/mask_grow_node.jpg new file mode 100644 index 0000000..35b83f8 Binary files /dev/null and b/image/mask_grow_node.jpg differ diff --git a/image/mask_grow_node.png b/image/mask_grow_node.png deleted file mode 100644 index 6529ac7..0000000 Binary files a/image/mask_grow_node.png and /dev/null differ diff --git a/image/mask_invert.jpg b/image/mask_invert.jpg new file mode 100644 index 0000000..98f8a54 Binary files /dev/null and b/image/mask_invert.jpg differ diff --git a/image/mask_invert.png b/image/mask_invert.png deleted file mode 100644 index 923b3a8..0000000 Binary files a/image/mask_invert.png and /dev/null differ diff --git a/image/mask_invert_node.jpg b/image/mask_invert_node.jpg new file mode 100644 index 0000000..b340f8c Binary files /dev/null and b/image/mask_invert_node.jpg differ diff --git a/image/mask_invert_node.png b/image/mask_invert_node.png deleted file mode 100644 index f710903..0000000 Binary files a/image/mask_invert_node.png and /dev/null differ diff --git a/image/mask_motion_blur_example.jpg b/image/mask_motion_blur_example.jpg new file mode 100644 index 0000000..2e5dabe Binary files /dev/null and b/image/mask_motion_blur_example.jpg differ diff --git a/image/mask_motion_blur_example.png b/image/mask_motion_blur_example.png deleted file mode 100644 index 12558d4..0000000 Binary files a/image/mask_motion_blur_example.png and /dev/null differ diff --git a/image/mask_motion_blur_node.jpg b/image/mask_motion_blur_node.jpg new file mode 100644 index 0000000..a7ef18c Binary files /dev/null and b/image/mask_motion_blur_node.jpg differ diff --git a/image/mask_motion_blur_node.png b/image/mask_motion_blur_node.png deleted file mode 100644 index 2b96293..0000000 Binary files a/image/mask_motion_blur_node.png and /dev/null differ diff --git a/image/mask_preview_example.jpg b/image/mask_preview_example.jpg new file mode 100644 index 0000000..653b056 Binary files /dev/null and b/image/mask_preview_example.jpg differ diff --git a/image/mask_preview_example.png b/image/mask_preview_example.png deleted file mode 100644 index 63c3702..0000000 Binary files a/image/mask_preview_example.png and /dev/null differ diff --git a/image/mask_stroke_example.jpg b/image/mask_stroke_example.jpg new file mode 100644 index 0000000..cb998e2 Binary files /dev/null and b/image/mask_stroke_example.jpg differ diff --git a/image/mask_stroke_example.png b/image/mask_stroke_example.png deleted file mode 100644 index a664f80..0000000 Binary files a/image/mask_stroke_example.png and /dev/null differ diff --git a/image/mask_stroke_node.jpg b/image/mask_stroke_node.jpg new file mode 100644 index 0000000..923a2c9 Binary files /dev/null and b/image/mask_stroke_node.jpg differ diff --git a/image/mask_stroke_node.png b/image/mask_stroke_node.png deleted file mode 100644 index c328157..0000000 Binary files a/image/mask_stroke_node.png and /dev/null differ diff --git a/image/menu_layer_color.jpg b/image/menu_layer_color.jpg new file mode 100644 index 0000000..b5b74e6 Binary files /dev/null and b/image/menu_layer_color.jpg differ diff --git a/image/menu_layer_color.png b/image/menu_layer_color.png deleted file mode 100644 index 254dc6f..0000000 Binary files a/image/menu_layer_color.png and /dev/null differ diff --git a/image/menu_layer_filter.jpg b/image/menu_layer_filter.jpg new file mode 100644 index 0000000..40278c8 Binary files /dev/null and b/image/menu_layer_filter.jpg differ diff --git a/image/menu_layer_filter.png b/image/menu_layer_filter.png deleted file mode 100644 index a002271..0000000 Binary files a/image/menu_layer_filter.png and /dev/null differ diff --git a/image/menu_layer_mask.jpg b/image/menu_layer_mask.jpg new file mode 100644 index 0000000..e75329c Binary files /dev/null and b/image/menu_layer_mask.jpg differ diff --git a/image/menu_layer_mask.png b/image/menu_layer_mask.png deleted file mode 100644 index 90bc5f6..0000000 Binary files a/image/menu_layer_mask.png and /dev/null differ diff --git a/image/menu_layer_style.jpg b/image/menu_layer_style.jpg new file mode 100644 index 0000000..82c8040 Binary files /dev/null and b/image/menu_layer_style.jpg differ diff --git a/image/menu_layer_style.png b/image/menu_layer_style.png deleted file mode 100644 index 54cfbc8..0000000 Binary files a/image/menu_layer_style.png and /dev/null differ diff --git a/image/menu_layer_utility.jpg b/image/menu_layer_utility.jpg new file mode 100644 index 0000000..7b69ece Binary files /dev/null and b/image/menu_layer_utility.jpg differ diff --git a/image/menu_layer_utility.png b/image/menu_layer_utility.png deleted file mode 100644 index ba122f8..0000000 Binary files a/image/menu_layer_utility.png and /dev/null differ diff --git a/image/motion_blur_example.jpg b/image/motion_blur_example.jpg new file mode 100644 index 0000000..8f29ed8 Binary files /dev/null and b/image/motion_blur_example.jpg differ diff --git a/image/motion_blur_example.png b/image/motion_blur_example.png deleted file mode 100644 index b98dead..0000000 Binary files a/image/motion_blur_example.png and /dev/null differ diff --git a/image/node-menu.jpg b/image/node-menu.jpg new file mode 100644 index 0000000..8edcf7f Binary files /dev/null and b/image/node-menu.jpg differ diff --git a/image/node-menu.png b/image/node-menu.png deleted file mode 100644 index 4962e17..0000000 Binary files a/image/node-menu.png and /dev/null differ diff --git a/image/node-search.jpg b/image/node-search.jpg new file mode 100644 index 0000000..47ac217 Binary files /dev/null and b/image/node-search.jpg differ diff --git a/image/node-search.png b/image/node-search.png deleted file mode 100644 index 1e993c2..0000000 Binary files a/image/node-search.png and /dev/null differ diff --git a/image/number_calculator_node.jpg b/image/number_calculator_node.jpg new file mode 100644 index 0000000..80c424e Binary files /dev/null and b/image/number_calculator_node.jpg differ diff --git a/image/number_calculator_node.png b/image/number_calculator_node.png deleted file mode 100644 index 92751ae..0000000 Binary files a/image/number_calculator_node.png and /dev/null differ diff --git a/image/outer_glow_example.jpg b/image/outer_glow_example.jpg new file mode 100644 index 0000000..2955587 Binary files /dev/null and b/image/outer_glow_example.jpg differ diff --git a/image/outer_glow_example.png b/image/outer_glow_example.png deleted file mode 100644 index 8907e6c..0000000 Binary files a/image/outer_glow_example.png and /dev/null differ diff --git a/image/outer_glow_node.jpg b/image/outer_glow_node.jpg new file mode 100644 index 0000000..196af9e Binary files /dev/null and b/image/outer_glow_node.jpg differ diff --git a/image/outer_glow_node.png b/image/outer_glow_node.png deleted file mode 100644 index e38c958..0000000 Binary files a/image/outer_glow_node.png and /dev/null differ diff --git a/image/person_mask_ultra_example.jpg b/image/person_mask_ultra_example.jpg new file mode 100644 index 0000000..a5f7645 Binary files /dev/null and b/image/person_mask_ultra_example.jpg differ diff --git a/image/person_mask_ultra_example.png b/image/person_mask_ultra_example.png deleted file mode 100644 index 0e64bc2..0000000 Binary files a/image/person_mask_ultra_example.png and /dev/null differ diff --git a/image/person_mask_ultra_node.jpg b/image/person_mask_ultra_node.jpg new file mode 100644 index 0000000..4f4773e Binary files /dev/null and b/image/person_mask_ultra_node.jpg differ diff --git a/image/person_mask_ultra_node.png b/image/person_mask_ultra_node.png deleted file mode 100644 index 88d2df5..0000000 Binary files a/image/person_mask_ultra_node.png and /dev/null differ diff --git a/image/person_mask_ultra_v2_node.jpg b/image/person_mask_ultra_v2_node.jpg new file mode 100644 index 0000000..af9d915 Binary files /dev/null and b/image/person_mask_ultra_v2_node.jpg differ diff --git a/image/person_mask_ultra_v2_node.png b/image/person_mask_ultra_v2_node.png deleted file mode 100644 index d601db7..0000000 Binary files a/image/person_mask_ultra_v2_node.png and /dev/null differ diff --git a/image/pixel_spread_example.jpg b/image/pixel_spread_example.jpg new file mode 100644 index 0000000..753ef9f Binary files /dev/null and b/image/pixel_spread_example.jpg differ diff --git a/image/pixel_spread_example.png b/image/pixel_spread_example.png deleted file mode 100644 index 9e92e93..0000000 Binary files a/image/pixel_spread_example.png and /dev/null differ diff --git a/image/pixel_spread_node.jpg b/image/pixel_spread_node.jpg new file mode 100644 index 0000000..6367910 Binary files /dev/null and b/image/pixel_spread_node.jpg differ diff --git a/image/pixel_spread_node.png b/image/pixel_spread_node.png deleted file mode 100644 index 648730e..0000000 Binary files a/image/pixel_spread_node.png and /dev/null differ diff --git a/image/print_info_node.jpg b/image/print_info_node.jpg new file mode 100644 index 0000000..31fcf7a Binary files /dev/null and b/image/print_info_node.jpg differ diff --git a/image/print_info_node.png b/image/print_info_node.png deleted file mode 100644 index c12c0a8..0000000 Binary files a/image/print_info_node.png and /dev/null differ diff --git a/image/prompt_embellish_example.jpg b/image/prompt_embellish_example.jpg new file mode 100644 index 0000000..4cc14d8 Binary files /dev/null and b/image/prompt_embellish_example.jpg differ diff --git a/image/prompt_embellish_example.png b/image/prompt_embellish_example.png deleted file mode 100644 index 91eb06b..0000000 Binary files a/image/prompt_embellish_example.png and /dev/null differ diff --git a/image/prompt_embellish_node.jpg b/image/prompt_embellish_node.jpg new file mode 100644 index 0000000..b8ca5dc Binary files /dev/null and b/image/prompt_embellish_node.jpg differ diff --git a/image/prompt_embellish_node.png b/image/prompt_embellish_node.png deleted file mode 100644 index 1d69f80..0000000 Binary files a/image/prompt_embellish_node.png and /dev/null differ diff --git a/image/prompt_tagger_example.jpg b/image/prompt_tagger_example.jpg new file mode 100644 index 0000000..1dd9727 Binary files /dev/null and b/image/prompt_tagger_example.jpg differ diff --git a/image/prompt_tagger_example.png b/image/prompt_tagger_example.png deleted file mode 100644 index b4b5142..0000000 Binary files a/image/prompt_tagger_example.png and /dev/null differ diff --git a/image/prompt_tagger_example1.jpg b/image/prompt_tagger_example1.jpg new file mode 100644 index 0000000..07d1d9f Binary files /dev/null and b/image/prompt_tagger_example1.jpg differ diff --git a/image/prompt_tagger_example1.png b/image/prompt_tagger_example1.png deleted file mode 100644 index 5da52cb..0000000 Binary files a/image/prompt_tagger_example1.png and /dev/null differ diff --git a/image/prompt_tagger_node.jpg b/image/prompt_tagger_node.jpg new file mode 100644 index 0000000..dde7564 Binary files /dev/null and b/image/prompt_tagger_node.jpg differ diff --git a/image/prompt_tagger_node.png b/image/prompt_tagger_node.png deleted file mode 100644 index 1c5640f..0000000 Binary files a/image/prompt_tagger_node.png and /dev/null differ diff --git a/image/purge_vram_example.jpg b/image/purge_vram_example.jpg new file mode 100644 index 0000000..981dfff Binary files /dev/null and b/image/purge_vram_example.jpg differ diff --git a/image/purge_vram_example.png b/image/purge_vram_example.png deleted file mode 100644 index d65158a..0000000 Binary files a/image/purge_vram_example.png and /dev/null differ diff --git a/image/qwen_image2prompt_example.jpg b/image/qwen_image2prompt_example.jpg new file mode 100644 index 0000000..99f84bb Binary files /dev/null and b/image/qwen_image2prompt_example.jpg differ diff --git a/image/qwen_image2prompt_example.png b/image/qwen_image2prompt_example.png deleted file mode 100644 index 3264824..0000000 Binary files a/image/qwen_image2prompt_example.png and /dev/null differ diff --git a/image/rembg_ultra_example.jpg b/image/rembg_ultra_example.jpg new file mode 100644 index 0000000..dae672c Binary files /dev/null and b/image/rembg_ultra_example.jpg differ diff --git a/image/rembg_ultra_example.png b/image/rembg_ultra_example.png deleted file mode 100644 index 8e76ccb..0000000 Binary files a/image/rembg_ultra_example.png and /dev/null differ diff --git a/image/rembg_ultra_node.jpg b/image/rembg_ultra_node.jpg new file mode 100644 index 0000000..1ae3d78 Binary files /dev/null and b/image/rembg_ultra_node.jpg differ diff --git a/image/rembg_ultra_node.png b/image/rembg_ultra_node.png deleted file mode 100644 index a6f0818..0000000 Binary files a/image/rembg_ultra_node.png and /dev/null differ diff --git a/image/restore_crop_box_node.jpg b/image/restore_crop_box_node.jpg new file mode 100644 index 0000000..8086142 Binary files /dev/null and b/image/restore_crop_box_node.jpg differ diff --git a/image/restore_crop_box_node.png b/image/restore_crop_box_node.png deleted file mode 100644 index bcf3716..0000000 Binary files a/image/restore_crop_box_node.png and /dev/null differ diff --git a/image/rmbg_ultra_v2_node.jpg b/image/rmbg_ultra_v2_node.jpg new file mode 100644 index 0000000..d006dd6 Binary files /dev/null and b/image/rmbg_ultra_v2_node.jpg differ diff --git a/image/rmbg_ultra_v2_node.png b/image/rmbg_ultra_v2_node.png deleted file mode 100644 index 1e03987..0000000 Binary files a/image/rmbg_ultra_v2_node.png and /dev/null differ diff --git a/image/save_image_plus_node.jpg b/image/save_image_plus_node.jpg new file mode 100644 index 0000000..28ff0a2 Binary files /dev/null and b/image/save_image_plus_node.jpg differ diff --git a/image/segment_anything_ultra_compare.jpg b/image/segment_anything_ultra_compare.jpg new file mode 100644 index 0000000..550df2c Binary files /dev/null and b/image/segment_anything_ultra_compare.jpg differ diff --git a/image/segment_anything_ultra_compare.png b/image/segment_anything_ultra_compare.png deleted file mode 100644 index f1b1447..0000000 Binary files a/image/segment_anything_ultra_compare.png and /dev/null differ diff --git a/image/segment_anything_ultra_example.jpg b/image/segment_anything_ultra_example.jpg new file mode 100644 index 0000000..e816dc2 Binary files /dev/null and b/image/segment_anything_ultra_example.jpg differ diff --git a/image/segment_anything_ultra_example.png b/image/segment_anything_ultra_example.png deleted file mode 100644 index b6404f6..0000000 Binary files a/image/segment_anything_ultra_example.png and /dev/null differ diff --git a/image/segment_anything_ultra_node.jpg b/image/segment_anything_ultra_node.jpg new file mode 100644 index 0000000..6abb2e0 Binary files /dev/null and b/image/segment_anything_ultra_node.jpg differ diff --git a/image/segment_anything_ultra_node.png b/image/segment_anything_ultra_node.png deleted file mode 100644 index 7b3616d..0000000 Binary files a/image/segment_anything_ultra_node.png and /dev/null differ diff --git a/image/segment_anything_ultra_v2_node.jpg b/image/segment_anything_ultra_v2_node.jpg new file mode 100644 index 0000000..8152b12 Binary files /dev/null and b/image/segment_anything_ultra_v2_node.jpg differ diff --git a/image/segment_anything_ultra_v2_node.png b/image/segment_anything_ultra_v2_node.png deleted file mode 100644 index bd54636..0000000 Binary files a/image/segment_anything_ultra_v2_node.png and /dev/null differ diff --git a/image/shadow_and_highlight_mask_example.jpg b/image/shadow_and_highlight_mask_example.jpg new file mode 100644 index 0000000..6f275d0 Binary files /dev/null and b/image/shadow_and_highlight_mask_example.jpg differ diff --git a/image/shadow_and_highlight_mask_example.png b/image/shadow_and_highlight_mask_example.png deleted file mode 100644 index 8b47b60..0000000 Binary files a/image/shadow_and_highlight_mask_example.png and /dev/null differ diff --git a/image/shadow_and_highlight_mask_node.jpg b/image/shadow_and_highlight_mask_node.jpg new file mode 100644 index 0000000..b2eb6bf Binary files /dev/null and b/image/shadow_and_highlight_mask_node.jpg differ diff --git a/image/shadow_and_highlight_mask_node.png b/image/shadow_and_highlight_mask_node.png deleted file mode 100644 index e534889..0000000 Binary files a/image/shadow_and_highlight_mask_node.png and /dev/null differ diff --git a/image/sharp_and_soft_example.jpg b/image/sharp_and_soft_example.jpg new file mode 100644 index 0000000..6aff6a9 Binary files /dev/null and b/image/sharp_and_soft_example.jpg differ diff --git a/image/sharp_and_soft_example.png b/image/sharp_and_soft_example.png deleted file mode 100644 index ac2425e..0000000 Binary files a/image/sharp_and_soft_example.png and /dev/null differ diff --git a/image/sharp_and_soft_node.jpg b/image/sharp_and_soft_node.jpg new file mode 100644 index 0000000..7e2b092 Binary files /dev/null and b/image/sharp_and_soft_node.jpg differ diff --git a/image/sharp_and_soft_node.png b/image/sharp_and_soft_node.png deleted file mode 100644 index a0e5f88..0000000 Binary files a/image/sharp_and_soft_node.png and /dev/null differ diff --git a/image/show_blind_watermark_node.jpg b/image/show_blind_watermark_node.jpg new file mode 100644 index 0000000..166ffa5 Binary files /dev/null and b/image/show_blind_watermark_node.jpg differ diff --git a/image/simple_text_image_example.jpg b/image/simple_text_image_example.jpg new file mode 100644 index 0000000..882313f Binary files /dev/null and b/image/simple_text_image_example.jpg differ diff --git a/image/simple_text_image_example.png b/image/simple_text_image_example.png deleted file mode 100644 index e253c6d..0000000 Binary files a/image/simple_text_image_example.png and /dev/null differ diff --git a/image/simple_text_image_node.jpg b/image/simple_text_image_node.jpg new file mode 100644 index 0000000..e402cb6 Binary files /dev/null and b/image/simple_text_image_node.jpg differ diff --git a/image/simple_text_image_node.png b/image/simple_text_image_node.png deleted file mode 100644 index 7935bf3..0000000 Binary files a/image/simple_text_image_node.png and /dev/null differ diff --git a/image/skin_beauty_example.jpg b/image/skin_beauty_example.jpg new file mode 100644 index 0000000..96ee143 Binary files /dev/null and b/image/skin_beauty_example.jpg differ diff --git a/image/skin_beauty_example.png b/image/skin_beauty_example.png deleted file mode 100644 index d786833..0000000 Binary files a/image/skin_beauty_example.png and /dev/null differ diff --git a/image/skin_beauty_node.jpg b/image/skin_beauty_node.jpg new file mode 100644 index 0000000..f81788d Binary files /dev/null and b/image/skin_beauty_node.jpg differ diff --git a/image/skin_beauty_node.png b/image/skin_beauty_node.png deleted file mode 100644 index d5d174b..0000000 Binary files a/image/skin_beauty_node.png and /dev/null differ diff --git a/image/soft_light_example.jpg b/image/soft_light_example.jpg new file mode 100644 index 0000000..bd85585 Binary files /dev/null and b/image/soft_light_example.jpg differ diff --git a/image/soft_light_example.png b/image/soft_light_example.png deleted file mode 100644 index aa172eb..0000000 Binary files a/image/soft_light_example.png and /dev/null differ diff --git a/image/soft_light_node.jpg b/image/soft_light_node.jpg new file mode 100644 index 0000000..af736dd Binary files /dev/null and b/image/soft_light_node.jpg differ diff --git a/image/soft_light_node.png b/image/soft_light_node.png deleted file mode 100644 index f27bfab..0000000 Binary files a/image/soft_light_node.png and /dev/null differ diff --git a/image/stroke_example.jpg b/image/stroke_example.jpg new file mode 100644 index 0000000..ac382b3 Binary files /dev/null and b/image/stroke_example.jpg differ diff --git a/image/stroke_example.png b/image/stroke_example.png deleted file mode 100644 index 775942f..0000000 Binary files a/image/stroke_example.png and /dev/null differ diff --git a/image/stroke_node.jpg b/image/stroke_node.jpg new file mode 100644 index 0000000..8e485bf Binary files /dev/null and b/image/stroke_node.jpg differ diff --git a/image/stroke_node.png b/image/stroke_node.png deleted file mode 100644 index 8d050d8..0000000 Binary files a/image/stroke_node.png and /dev/null differ diff --git a/image/text_box_node.jpg b/image/text_box_node.jpg new file mode 100644 index 0000000..62e107c Binary files /dev/null and b/image/text_box_node.jpg differ diff --git a/image/text_box_node.png b/image/text_box_node.png deleted file mode 100644 index aeec959..0000000 Binary files a/image/text_box_node.png and /dev/null differ diff --git a/image/text_image_example.jpg b/image/text_image_example.jpg new file mode 100644 index 0000000..35f62c3 Binary files /dev/null and b/image/text_image_example.jpg differ diff --git a/image/text_image_example.png b/image/text_image_example.png deleted file mode 100644 index 6f3726b..0000000 Binary files a/image/text_image_example.png and /dev/null differ diff --git a/image/text_image_node.jpg b/image/text_image_node.jpg new file mode 100644 index 0000000..3b17fdd Binary files /dev/null and b/image/text_image_node.jpg differ diff --git a/image/text_image_node.png b/image/text_image_node.png deleted file mode 100644 index 17cc2e2..0000000 Binary files a/image/text_image_node.png and /dev/null differ diff --git a/image/text_join_example.jpg b/image/text_join_example.jpg new file mode 100644 index 0000000..0c97dd6 Binary files /dev/null and b/image/text_join_example.jpg differ diff --git a/image/text_join_example.png b/image/text_join_example.png deleted file mode 100644 index 7a65eeb..0000000 Binary files a/image/text_join_example.png and /dev/null differ diff --git a/image/title.jpg b/image/title.jpg new file mode 100644 index 0000000..854647e Binary files /dev/null and b/image/title.jpg differ diff --git a/image/title.png b/image/title.png deleted file mode 100644 index c488844..0000000 Binary files a/image/title.png and /dev/null differ diff --git a/image/ultra_v2_nodes_example.jpg b/image/ultra_v2_nodes_example.jpg new file mode 100644 index 0000000..d9b06c4 Binary files /dev/null and b/image/ultra_v2_nodes_example.jpg differ diff --git a/image/ultra_v2_nodes_example.png b/image/ultra_v2_nodes_example.png deleted file mode 100644 index b67b294..0000000 Binary files a/image/ultra_v2_nodes_example.png and /dev/null differ diff --git a/image/water_color_example.jpg b/image/water_color_example.jpg new file mode 100644 index 0000000..3642972 Binary files /dev/null and b/image/water_color_example.jpg differ diff --git a/image/water_color_example.png b/image/water_color_example.png deleted file mode 100644 index 8b26709..0000000 Binary files a/image/water_color_example.png and /dev/null differ diff --git a/image/water_color_node.jpg b/image/water_color_node.jpg new file mode 100644 index 0000000..8a66baa Binary files /dev/null and b/image/water_color_node.jpg differ diff --git a/image/water_color_node.png b/image/water_color_node.png deleted file mode 100644 index 563130a..0000000 Binary files a/image/water_color_node.png and /dev/null differ diff --git a/image/watermark_example.jpg b/image/watermark_example.jpg new file mode 100644 index 0000000..e3b4c09 Binary files /dev/null and b/image/watermark_example.jpg differ diff --git a/image/xy2percent_example.jpg b/image/xy2percent_example.jpg new file mode 100644 index 0000000..ec37751 Binary files /dev/null and b/image/xy2percent_example.jpg differ diff --git a/image/xy2percent_example.png b/image/xy2percent_example.png deleted file mode 100644 index cb581bb..0000000 Binary files a/image/xy2percent_example.png and /dev/null differ diff --git a/image/xy2percent_node.jpg b/image/xy2percent_node.jpg new file mode 100644 index 0000000..20a1f4a Binary files /dev/null and b/image/xy2percent_node.jpg differ diff --git a/image/xy2percent_node.png b/image/xy2percent_node.png deleted file mode 100644 index 2f80527..0000000 Binary files a/image/xy2percent_node.png and /dev/null differ diff --git a/image/yolov8_detect_example.jpg b/image/yolov8_detect_example.jpg new file mode 100644 index 0000000..1dccdec Binary files /dev/null and b/image/yolov8_detect_example.jpg differ diff --git a/image/yolov8_detect_example.png b/image/yolov8_detect_example.png deleted file mode 100644 index a1f3050..0000000 Binary files a/image/yolov8_detect_example.png and /dev/null differ diff --git a/image/yolov8_detect_node.jpg b/image/yolov8_detect_node.jpg new file mode 100644 index 0000000..ea1a6b3 Binary files /dev/null and b/image/yolov8_detect_node.jpg differ diff --git a/image/yolov8_detect_node.png b/image/yolov8_detect_node.png deleted file mode 100644 index ef3aaaa..0000000 Binary files a/image/yolov8_detect_node.png and /dev/null differ diff --git a/py/imagefunc.py b/py/imagefunc.py index 9c275be..48b49fe 100644 --- a/py/imagefunc.py +++ b/py/imagefunc.py @@ -1162,6 +1162,96 @@ def generate_text_image(text:str, font_path:str, font_size:int, text_color:str=" index += 1 return (image.convert('RGB'), image.split()[3]) +def watermark_image_size(image:Image) -> int: + size = int(math.sqrt(image.width * image.height * 0.015625) * 0.9) + return size + +def add_invisibal_watermark(image:Image, watermark_image:Image) -> Image: + """ + Adds an invisible watermark to an image. + """ + orig_image_mode = image.mode + temp_dir = os.path.join(folder_paths.get_temp_directory(), generate_random_name('_watermark_', '_temp', 16)) + if os.path.isdir(temp_dir): + shutil.rmtree(temp_dir) + image_dir = os.path.join(temp_dir, 'image') + wm_dir = os.path.join(temp_dir, 'wm') + result_dir = os.path.join(temp_dir, 'result') + + try: + os.makedirs(image_dir) + os.makedirs(wm_dir) + os.makedirs(result_dir) + except Exception as e: + print(e) + log(f"Error: {NODE_NAME} skipped, because unable to create temporary folder.", message_type='error') + return (image,) + + image_file_name = os.path.join(generate_random_name('watermark_orig_', '_temp', 16) + '.png') + wm_file_name = os.path.join(generate_random_name('watermark_image_', '_temp', 16) + '.png') + output_file_name = os.path.join(generate_random_name('watermark_output_', '_temp', 16) + '.png') + + try: + if image.mode != "RGB": + image = image.convert("RGB") + image.save(os.path.join(image_dir, image_file_name)) + watermark_image.save(os.path.join(wm_dir, wm_file_name)) + except IOError as e: + print(e) + log(f"Error: {NODE_NAME} skipped, because unable to create temporary file.", message_type='error') + return (image,) + + from blind_watermark import WaterMark + bwm1 = WaterMark(password_img=1, password_wm=1) + bwm1.read_img(os.path.join(image_dir, image_file_name)) + bwm1.read_wm(os.path.join(wm_dir, wm_file_name)) + output_image = os.path.join(result_dir, output_file_name) + bwm1.embed(output_image, compression_ratio=100) + + return Image.open(output_image).convert(orig_image_mode) + +def decode_watermark(image:Image, watermark_image_size:int=94) -> Image: + temp_dir = os.path.join(folder_paths.get_temp_directory(), generate_random_name('_watermark_', '_temp', 16)) + if os.path.isdir(temp_dir): + shutil.rmtree(temp_dir) + image_dir = os.path.join(temp_dir, 'decode_image') + result_dir = os.path.join(temp_dir, 'decode_result') + + try: + os.makedirs(image_dir) + os.makedirs(result_dir) + except Exception as e: + print(e) + log(f"Error: {NODE_NAME} skipped, because unable to create temporary folder.", message_type='error') + return (image,) + + image_file_name = os.path.join(generate_random_name('watermark_decode_', '_temp', 16) + '.png') + output_file_name = os.path.join(generate_random_name('watermark_decode_output_', '_temp', 16) + '.png') + + try: + image.save(os.path.join(image_dir, image_file_name)) + except IOError as e: + print(e) + log(f"Error: {NODE_NAME} skipped, because unable to create temporary file.", message_type='error') + return (image,) + + from blind_watermark import WaterMark + bwm1 = WaterMark(password_img=1, password_wm=1) + decode_image = os.path.join(image_dir, image_file_name) + output_image = os.path.join(result_dir, output_file_name) + + try: + bwm1.extract(filename=decode_image, wm_shape=(watermark_image_size, watermark_image_size), + out_wm_name=os.path.join(output_image),) + ret_image = Image.open(output_image) + except Exception as e: + log(f"blind watermark extract fail, {e}") + ret_image = Image.new("RGB", (64, 64), color="black") + + ret_image = normalize_gray(ret_image) + + return ret_image + '''Mask Functions''' @lru_cache(maxsize=1, typed=False) diff --git a/py/qrcode.py b/py/qrcode.py new file mode 100644 index 0000000..b4a7718 --- /dev/null +++ b/py/qrcode.py @@ -0,0 +1,87 @@ +from .imagefunc import * + +class CreateQRCode: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + + return { + "required": { + "size": ("INT", {"default": 512, "min": 4, "max": 99999, "step": 1}), + "border": ("INT", {"default": 1, "min": 1, "max": 10, "step": 1}), + "text": ("STRING", {"default": "", "multiline": True}), + }, + "optional": { + } + } + + RETURN_TYPES = ("IMAGE", ) + RETURN_NAMES = ("image", ) + FUNCTION = 'create_qrcode' + CATEGORY = '😺dzNodes/LayerUtility' + + def create_qrcode(self, size, border, text): + import qrcode + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_H, + box_size=20, + border=border, + ) + qr.add_data(text.encode('utf-8')) + qr.make(fit=True) + ret_image = qr.make_image(fill_color="black", back_color="white") + ret_image = ret_image.resize((size, size), Image.BICUBIC) + + return (pil2tensor(ret_image.convert("RGB")), ) + +class DecodeQRCode: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + + return { + "required": { + "image": ("IMAGE",), + "pre_blur": ("INT", {"default": 2, "min": 0, "max": 16, "step": 1}), + }, + "optional": { + } + } + + RETURN_TYPES = ("STRING", ) + RETURN_NAMES = ("string", ) + FUNCTION = 'decode_qrcode' + CATEGORY = '😺dzNodes/LayerUtility' + + def decode_qrcode(self, image, pre_blur): + ret_texts = [] + from pyzbar.pyzbar import decode + for i in image: + _image = torch.unsqueeze(i, 0) + _image = tensor2pil(_image) + if pre_blur: + _image = gaussian_blur(_image, pre_blur) + qrmessage = decode(_image) + if len(qrmessage) > 0: + ret_texts.append(qrmessage[0][0].decode('utf-8')) + else: + ret_texts.append("Cannot recognize QR") + + return (ret_texts, ) + +NODE_CLASS_MAPPINGS = { + "LayerUtility: CreateQRCode": CreateQRCode, + "LayerUtility: DecodeQRCode": DecodeQRCode +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerUtility: CreateQRCode": "LayerUtility: Create QRCode", + "LayerUtility: DecodeQRCode": "LayerUtility: Decode QRCode" +} \ No newline at end of file diff --git a/py/save_image_plus.py b/py/save_image_plus.py new file mode 100644 index 0000000..dda3f2f --- /dev/null +++ b/py/save_image_plus.py @@ -0,0 +1,123 @@ +import os.path +from PIL.PngImagePlugin import PngInfo +import datetime +from .imagefunc import * + +NODE_NAME = 'SaveImagePlus' + +class SaveImagePlus: + def __init__(self): + self.output_dir = folder_paths.get_output_directory() + self.type = "output" + self.prefix_append = "" + self.compress_level = 4 + + @classmethod + def INPUT_TYPES(s): + return {"required": + {"images": ("IMAGE", ), + "custom_path": ("STRING", {"default": ""}), + "filename_prefix": ("STRING", {"default": "comfyui"}), + "timestamp": (["None", "second", "millisecond"],), + "format": (["png", "jpg"],), + "quality": ("INT", {"default": 100, "min": 10, "max": 100, "step": 1}), + "meta_data": ("BOOLEAN", {"default": False}), + "blind_watermark": ("STRING", {"default": ""}), + }, + "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, + } + + RETURN_TYPES = () + FUNCTION = "save_image_plus" + OUTPUT_NODE = True + CATEGORY = '😺dzNodes/LayerUtility' + + def save_image_plus(self, images, custom_path, filename_prefix, timestamp, format, quality, + meta_data, blind_watermark, prompt=None, extra_pnginfo=None): + + + filename_prefix += self.prefix_append + full_output_folder, filename, counter, subfolder, filename_prefix = folder_paths.get_save_image_path(filename_prefix, self.output_dir, images[0].shape[1], images[0].shape[0]) + results = list() + for image in images: + i = 255. * image.cpu().numpy() + img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8)) + + if blind_watermark != "": + img_mode = img.mode + wm_size = watermark_image_size(img) + import qrcode + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_H, + box_size=20, + border=1, + ) + qr.add_data(blind_watermark.encode('utf-8')) + qr.make(fit=True) + qr_image = qr.make_image(fill_color="black", back_color="white") + qr_image = qr_image.resize((wm_size, wm_size), Image.BICUBIC).convert("L") + + y, u, v, _ = image_channel_split(img, mode='YCbCr') + _u = add_invisibal_watermark(u, qr_image) + wm_img = image_channel_merge((y, _u, v), mode='YCbCr') + + if img.mode == "RGBA": + img = RGB2RGBA(wm_img, img.split()[-1]) + else: + img = wm_img.convert(img_mode) + + metadata = None + if meta_data: + metadata = PngInfo() + if prompt is not None: + metadata.add_text("prompt", json.dumps(prompt)) + if extra_pnginfo is not None: + for x in extra_pnginfo: + metadata.add_text(x, json.dumps(extra_pnginfo[x])) + + if timestamp == "millisecond": + file = f'{filename}_{datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S-%f")[:-3]}.{format}' + elif timestamp == "second": + file = f'{filename}_{datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.{format}' + else: + file = f'{filename}_{counter:05}.{format}' + + if not os.path.exists(custom_path): + if custom_path != "": + raise FileNotFoundError("custom_path is not a valid path") + else: + full_output_folder = os.path.normpath(custom_path) + + while os.path.isfile(os.path.join(full_output_folder, file)): + counter += 1 + if timestamp == "millisecond": + file = f'{filename}_{datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S-%f")[:-3]}_{counter:05}.{format}' + elif timestamp == "second": + file = f'{filename}_{datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}_{counter:05}.{format}' + else: + file = f"{filename}_{counter:05}.{format}" + + if format == "png": + img.save(os.path.join(full_output_folder, file), pnginfo=metadata, compress_level= (100 - quality) // 10) + else: + if img.mode == "RGBA": + img = img.convert("RGB") + img.save(os.path.join(full_output_folder, file), quality=quality) + + results.append({ + "filename": file, + "subfolder": subfolder, + "type": self.type + }) + counter += 1 + + return { "ui": { "images": results } } + +NODE_CLASS_MAPPINGS = { + "LayerUtility: SaveImagePlus": SaveImagePlus +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerUtility: SaveImagePlus": "LayerUtility: SaveImage Plus" +} \ No newline at end of file diff --git a/py/watermark.py b/py/watermark.py new file mode 100644 index 0000000..dc70d64 --- /dev/null +++ b/py/watermark.py @@ -0,0 +1,111 @@ +from .imagefunc import * + + + +class EncodeBlindWaterMark: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + + return { + "required": { + "image": ("IMAGE", ), # + "watermark_image": ("IMAGE",), # + }, + "optional": { + } + } + + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("image",) + FUNCTION = 'watermark_encode' + CATEGORY = '😺dzNodes/LayerUtility' + + def watermark_encode(self, image, watermark_image): + + NODE_NAME = 'Add BlindWaterMark' + + l_images = [] + w_images = [] + ret_images = [] + + for l in image: + l_images.append(torch.unsqueeze(l, 0)) + for w in watermark_image: + w_images.append(torch.unsqueeze(w, 0)) + + for i in range(len(l_images)): + _image = tensor2pil(l_images[i]) + wm_size = watermark_image_size(_image) + _wm_image = w_images[i] if i < len(w_images) else w_images[-1] + _wm_image = tensor2pil(_wm_image) + _wm_image = _wm_image.resize((wm_size, wm_size), Image.LANCZOS) + _wm_image = _wm_image.convert("L") + + y, u, v, _ = image_channel_split(_image, mode='YCbCr') + _u = add_invisibal_watermark(u, _wm_image) + ret_image = image_channel_merge((y, _u, v), mode='YCbCr') + + if _image.mode == "RGBA": + ret_image = RGB2RGBA(ret_image, _image.split()[-1]) + ret_images.append(pil2tensor(ret_image)) + + log(f"{NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish') + return (torch.cat(ret_images, dim=0),) + + + +class DecodeBlindWaterMark: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + + return { + "required": { + "image": ("IMAGE",), # + }, + "optional": { + } + } + + RETURN_TYPES = ("IMAGE", ) + RETURN_NAMES = ("watermark_image",) + FUNCTION = 'watermark_decode' + CATEGORY = '😺dzNodes/LayerUtility' + + def watermark_decode(self, image): + + NODE_NAME = 'Decode BlindWaterMark' + + ret_images = [] + + for i in image: + _image = torch.unsqueeze(i,0) + _image = tensor2pil(_image) + wm_size = watermark_image_size(_image) + y, u, v, _ = image_channel_split(_image, mode='YCbCr') + ret_image = decode_watermark(u, wm_size) + ret_image = ret_image.resize((512, 512), Image.LANCZOS) + ret_image = normalize_gray(ret_image) + ret_images.append(pil2tensor(ret_image.convert('RGB'))) + + log(f"{NODE_NAME} Processed {len(ret_images)} image(s).", message_type='finish') + return (torch.cat(ret_images, dim=0), ) + + + +NODE_CLASS_MAPPINGS = { + "LayerUtility: AddBlindWaterMark": EncodeBlindWaterMark, + "LayerUtility: ShowBlindWaterMark": DecodeBlindWaterMark +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerUtility: AddBlindWaterMark": "LayerUtility: Add BlindWaterMark", + "LayerUtility: ShowBlindWaterMark": "LayerUtility: Show BlindWaterMark" +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 6b555cf..ff570b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,4 +25,7 @@ transformers kornia image-reward ultralytics -blend_modes \ No newline at end of file +blend_modes +blind-watermark +qrcode +pyzbar diff --git a/workflow/watermark_example.json b/workflow/watermark_example.json new file mode 100644 index 0000000..e241ad6 --- /dev/null +++ b/workflow/watermark_example.json @@ -0,0 +1,592 @@ +{ + "last_node_id": 27, + "last_link_id": 27, + "nodes": [ + { + "id": 1, + "type": "LayerUtility: AddBlindWaterMark", + "pos": [ + 1135, + 670 + ], + "size": { + "0": 268.79998779296875, + "1": 46 + }, + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 1, + "slot_index": 0 + }, + { + "name": "watermark_image", + "type": "IMAGE", + "link": 8 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 3, + 4 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: AddBlindWaterMark" + } + }, + { + "id": 2, + "type": "LoadImage", + "pos": [ + 682, + 468 + ], + "size": { + "0": 397.7324523925781, + "1": 323.5675354003906 + }, + "flags": {}, + "order": 0, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 1 + ], + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "1344x768_beach (1).png", + "image" + ] + }, + { + "id": 9, + "type": "LayerUtility: CreateQRCode", + "pos": [ + 683, + 868 + ], + "size": { + "0": 400, + "1": 200 + }, + "flags": {}, + "order": 1, + "mode": 0, + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 8 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: CreateQRCode" + }, + "widgets_values": [ + 512, + 1, + "LayerStyle" + ] + }, + { + "id": 5, + "type": "LayerUtility: ShowBlindWaterMark", + "pos": [ + 1520, + 850 + ], + "size": { + "0": 277.20001220703125, + "1": 30.475421905517578 + }, + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 4 + } + ], + "outputs": [ + { + "name": "watermark_image", + "type": "IMAGE", + "links": [ + 5, + 9 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: ShowBlindWaterMark" + } + }, + { + "id": 10, + "type": "LayerUtility: DecodeQRCode", + "pos": [ + 1855, + 853 + ], + "size": { + "0": 315, + "1": 58 + }, + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 9 + } + ], + "outputs": [ + { + "name": "string", + "type": "STRING", + "links": [ + 10 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: DecodeQRCode" + }, + "widgets_values": [ + 2 + ] + }, + { + "id": 6, + "type": "PreviewImage", + "pos": [ + 1523, + 962 + ], + "size": { + "0": 262.6583251953125, + "1": 255.0736846923828 + }, + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 5 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 19, + "type": "LayerUtility: AddBlindWaterMark", + "pos": [ + 1160, + 1600 + ], + "size": { + "0": 268.79998779296875, + "1": 46 + }, + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 20, + "slot_index": 0 + }, + { + "name": "watermark_image", + "type": "IMAGE", + "link": 27 + } + ], + "outputs": [ + { + "name": "image", + "type": "IMAGE", + "links": [ + 22, + 23 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: AddBlindWaterMark" + } + }, + { + "id": 22, + "type": "LayerUtility: ShowBlindWaterMark", + "pos": [ + 1540, + 1780 + ], + "size": { + "0": 277.20001220703125, + "1": 30.475421905517578 + }, + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 23 + } + ], + "outputs": [ + { + "name": "watermark_image", + "type": "IMAGE", + "links": [ + 24 + ], + "shape": 3, + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "LayerUtility: ShowBlindWaterMark" + } + }, + { + "id": 23, + "type": "PreviewImage", + "pos": [ + 1550, + 1890 + ], + "size": { + "0": 262.6583251953125, + "1": 255.0736846923828 + }, + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 24 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 20, + "type": "LoadImage", + "pos": [ + 700, + 1400 + ], + "size": { + "0": 397.7324523925781, + "1": 323.5675354003906 + }, + "flags": {}, + "order": 2, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 20 + ], + "shape": 3 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "1344x768_girl2.png", + "image" + ] + }, + { + "id": 4, + "type": "PreviewImage", + "pos": [ + 1518, + 456 + ], + "size": [ + 494.42527914239736, + 315.20930867362824 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 3 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + }, + { + "id": 8, + "type": "Display Any (rgthree)", + "pos": [ + 1904, + 957 + ], + "size": { + "0": 242.66796875, + "1": 87.94121551513672 + }, + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "source", + "type": "*", + "link": 10, + "dir": 3 + } + ], + "properties": { + "Node name for S&R": "Display Any (rgthree)" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 27, + "type": "LoadImage", + "pos": [ + 770, + 1820 + ], + "size": [ + 315, + 314.00000381469727 + ], + "flags": {}, + "order": 3, + "mode": 0, + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 27 + ], + "shape": 3, + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null, + "shape": 3 + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "ComfyUI_temp_pzmea_00009_.png", + "image" + ] + }, + { + "id": 21, + "type": "PreviewImage", + "pos": [ + 1540, + 1390 + ], + "size": { + "0": 490.22747802734375, + "1": 323.8782653808594 + }, + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 22 + } + ], + "properties": { + "Node name for S&R": "PreviewImage" + } + } + ], + "links": [ + [ + 1, + 2, + 0, + 1, + 0, + "IMAGE" + ], + [ + 3, + 1, + 0, + 4, + 0, + "IMAGE" + ], + [ + 4, + 1, + 0, + 5, + 0, + "IMAGE" + ], + [ + 5, + 5, + 0, + 6, + 0, + "IMAGE" + ], + [ + 8, + 9, + 0, + 1, + 1, + "IMAGE" + ], + [ + 9, + 5, + 0, + 10, + 0, + "IMAGE" + ], + [ + 10, + 10, + 0, + 8, + 0, + "*" + ], + [ + 20, + 20, + 0, + 19, + 0, + "IMAGE" + ], + [ + 22, + 19, + 0, + 21, + 0, + "IMAGE" + ], + [ + 23, + 19, + 0, + 22, + 0, + "IMAGE" + ], + [ + 24, + 22, + 0, + 23, + 0, + "IMAGE" + ], + [ + 27, + 27, + 0, + 19, + 1, + "IMAGE" + ] + ], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 0.7513148009015778, + "offset": [ + 419.816938926498, + -337.6024702455139 + ] + } + }, + "version": 0.4 +} \ No newline at end of file