Initial commit: Tile Image node for ComfyUI

This commit is contained in:
Your Name
2025-03-31 16:48:58 +08:00
commit 23e2e4898d
4 changed files with 108 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db
+28
View File
@@ -0,0 +1,28 @@
# Tile Image Node for ComfyUI
一个简单的ComfyUI自定义节点,用于将图像水平平铺多次。
## 功能
- 将输入图像水平平铺指定次数
- 可以控制图像之间的间距
- 保持原始图像的高度不变
- 输出带有完整mask的图像
## 安装
```bash
cd custom_nodes
git clone https://github.com/yourusername/ComfyUI-TileImage TileImage
```
## 使用方法
节点会在ComfyUI的"image/processing"类别下出现,名称为"Tile Image"。
### 参数
- `image`: 输入图像
- `mask`: 输入mask
- `num_tiles`: 要平铺的图像数量
- `spacing`: 图像之间的间距(像素)
+9
View File
@@ -0,0 +1,9 @@
from .tile_image import TileImage
NODE_CLASS_MAPPINGS = {
"TileImage": TileImage
}
NODE_DISPLAY_NAME_MAPPINGS = {
"TileImage": "Tile Image"
}
+40
View File
@@ -0,0 +1,40 @@
import torch
import numpy as np
class TileImage:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"image": ("IMAGE",),
"mask": ("MASK",),
"num_tiles": ("INT", {"default": 2, "min": 1}),
"spacing": ("INT", {"default": 0, "min": 0}),
}
}
RETURN_TYPES = ("IMAGE", "MASK")
RETURN_NAMES = ("image", "mask")
FUNCTION = "tile"
CATEGORY = "image/processing"
def tile(self, image, mask, num_tiles, spacing):
# 获取图像尺寸
b, h, w, c = image.shape
# 创建新的画布,使用完全透明的背景
new_width = w * num_tiles + spacing * (num_tiles - 1)
new_image = torch.zeros((b, h, new_width, c), dtype=image.dtype)
# 创建新的mask画布,填充为1(完全不透明)
new_mask = torch.ones((b, h, new_width), dtype=mask.dtype)
# 复制图像和mask并添加间距
for i in range(num_tiles):
start_x = i * (w + spacing)
# 直接复制原始图像,保持透明通道不变
new_image[:, :, start_x:start_x + w, :] = image
# 复制mask,间隔部分保持透明(0值)
new_mask[:, :, start_x:start_x + w] = mask
return (new_image, new_mask)