2.7 KiB
2.7 KiB
Documentation
- Class name: ImagePaste
- Category: Mikey/Image
- Output node: False
- Repo Ref: https://github.com/bash-j/mikey_nodes
ImagePaste节点旨在将前景图像无缝集成到背景图像上的指定位置。它通过将图像的张量表示转换为PIL图像,操作alpha通道以实现透明度,并在确切坐标处将前景粘贴到背景上,从而实现此目的。该节点对于需要精确控制图像放置的图像合成任务至关重要。
Input types
Required
- background_image
- 背景图像是前景将被粘贴的地方。它作为合成的画布,对输出图像的最终外观至关重要。
- Comfy dtype: IMAGE
- Python dtype: torch.Tensor
- foreground_image
- 将放置在背景图像上的图像。它很重要,因为它定义了最终图像中在视觉上突出的主题或元素。
- Comfy dtype: IMAGE
- Python dtype: torch.Tensor
Optional
- x_position
- 在背景上,前景图像左上角将被放置的水平位置。它很重要,因为它决定了图像在组合中的具体放置位置。
- Comfy dtype: INT
- Python dtype: int
- y_position
- 在背景上,前景图像左上角将被放置的垂直位置。它与x_position一起工作,以设定粘贴图像的精确位置。
- Comfy dtype: INT
- Python dtype: int
Output types
- image
- 在指定位置将前景粘贴到背景上后得到的图像结果。它代表了最终的组合,是节点的主要输出。
- Comfy dtype: IMAGE
- Python dtype: torch.Tensor
Usage tips
- Infra type: CPU
Source code
class ImagePaste:
@classmethod
def INPUT_TYPES(cls):
return {'required': {'background_image': ('IMAGE',), 'foreground_image': ('IMAGE',), 'x_position': ('INT', {'default': 0, 'min': -10000, 'max': 10000}), 'y_position': ('INT', {'default': 0, 'min': -10000, 'max': 10000})}}
RETURN_TYPES = ('IMAGE',)
RETURN_NAMES = ('image',)
FUNCTION = 'paste'
CATEGORY = 'Mikey/Image'
def tensor2pil(self, image):
image_np = np.clip(255.0 * image.cpu().numpy().squeeze(), 0, 255).astype(np.uint8)
if image_np.shape[0] == 4:
return Image.fromarray(image_np.transpose(1, 2, 0), 'RGBA')
else:
return Image.fromarray(image_np.transpose(1, 2, 0), 'RGB')
def paste(self, background_image, foreground_image, x_position, y_position):
background_image = tensor2pil(background_image)
foreground_image = tensor2pil(foreground_image)
if foreground_image.mode != 'RGBA':
foreground_image = foreground_image.convert('RGBA')
(r, g, b, alpha) = foreground_image.split()
background_image.paste(foreground_image, (x_position, y_position), mask=alpha)
return (pil2tensor(background_image),)