Initial commit: Tile Image node for ComfyUI
This commit is contained in:
+31
@@ -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
|
||||
@@ -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`: 图像之间的间距(像素)
|
||||
@@ -0,0 +1,9 @@
|
||||
from .tile_image import TileImage
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"TileImage": TileImage
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"TileImage": "Tile Image"
|
||||
}
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user