{"id":40184480,"url":"https://github.com/shmbatom/Comfyui-Image-Concat","last_synced_at":"2026-02-07T20:00:37.582Z","repository":{"id":331562765,"uuid":"1131124443","full_name":"shmbatom/Comfyui-Image-Concat","owner":"shmbatom","description":"This node is a powerful image concatenation tool for ComfyUI, with True Alpha Channel Support and Multiple Image-block Fill Modes.","archived":false,"fork":false,"pushed_at":"2026-01-18T17:56:24.000Z","size":18567,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T19:03:06.519Z","etag":null,"topics":["concat","image","joint","slice"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shmbatom.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-09T14:09:58.000Z","updated_at":"2026-01-18T17:56:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shmbatom/Comfyui-Image-Concat","commit_stats":null,"previous_names":["shmbatom/comfyui-image-concat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/shmbatom/Comfyui-Image-Concat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmbatom%2FComfyui-Image-Concat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmbatom%2FComfyui-Image-Concat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmbatom%2FComfyui-Image-Concat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmbatom%2FComfyui-Image-Concat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shmbatom","download_url":"https://codeload.github.com/shmbatom/Comfyui-Image-Concat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shmbatom%2FComfyui-Image-Concat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29206798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T17:44:10.191Z","status":"ssl_error","status_checked_at":"2026-02-07T17:44:07.936Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concat","image","joint","slice"],"created_at":"2026-01-19T19:00:25.838Z","updated_at":"2026-02-07T20:00:37.569Z","avatar_url":"https://github.com/shmbatom.png","language":"Python","funding_links":[],"categories":["Workflows pushed today"],"sub_categories":[],"readme":"# Comfyui-Image-Concat - A Powerful Image Concatenation Tool (v1.1)\r\n\r\n---\r\n\r\n## ✨ Core Features (Latest Update: v1.1 - Critical Bug Fix + All Features from v1.1)\r\n\r\nThis node is a powerful image concatenation tool for ComfyUI, with True Alpha Channel Support and Multiple Image-title Fill Modes.\r\n\r\n---\r\n### ✨ I. Key Capabilities (v1.1)\r\n---\r\n\r\n#### 1. Six Image-title Fill Modes (Image resizing mode for each title block)\r\n\r\n| Mode | Description |\r\n|------|-------------|\r\n| **(1) smaller value filler** | Fill the block with the smaller value of the origin image's long side and the block's width (maintains aspect ratio) |\r\n| **(2) Stretches image to fill** | Stretches image to fill block (may distort aspect ratio) |\r\n| **(3) zoom by long side (recommended)** | Zoom long side of origin image to block width (maintains aspect ratio), then fill the block |\r\n| **(4) crop square by short side** | Crops square by short side of origin image (maintains aspect ratio), then zoom it to fill the block fully |\r\n| **(5) equal title width up_down** | Equal-width mode, images stack vertically (ideal for long strip images) |\r\n| **(6) equal title height left_right** | Equal-height mode, images stack horizontally (ideal for panorama images) |\r\n\r\n#### 2. Flexible Title Block Start Position Control\r\n\r\n- **(1) start_from margin**: Blocks start directly at page margin (top/left aligned)\r\n- **(2) start_from margin + padding**: Blocks start with extra padding (top aligned)\r\n- **(3) start_from margin + padding(vertical centering)**: Auto vertical centering + horizontal centering (optimized for incomplete rows/pages)\r\n\r\n#### 3. Optional Vertical/Horizontal Centering\r\n\r\n- **Horizontal Centering**: Automatically centers incomplete rows (multi-column mode)\r\n- **Vertical Centering**: Enabled via `start_from margin + padding(vertical centering)` option\r\n\r\n#### 4. Multiple Background Styles\r\n\r\n- **Light (white)** / **Dark (black)** / **Transparent (alpha channel)** (True 4-channel RGBA support)\r\n\r\n![background_style][def1]\r\n\r\n#### 5. Custom Border Styles (Dual Layer: Title Block + Whole Page)\r\n\r\n- **Border shapes**: None / Rectangle / Rounded (radius 10/20/30)\r\n- **Border line styles**: Solid / Dashed (4px,4px) / Dashed (8px,8px) / Dotted (1px,2px) / Dash-dot (8px,4px,2px,4px)\r\n- **Auto border color adaptation**: White on dark background, black on light/transparent background\r\n\r\n#### 6. Filename Customization\r\n\r\n- **Display filename** on/around title blocks (position: none/above/top/middle/bottom/below)\r\n- **16 customizable filename colors** (black/white/red/dark red/blue/dark blue/green/dark green/yellow/orange/purple/pink/light gray/dark gray/slate gray/cyan/magenta)\r\n\r\n#### 7. Save Individual Titles/Images\r\n\r\n- **Save modes**: none / save single title (with padding/border) / save single image (original size, no whitespace)\r\n- All saved files retain alpha channel (PNG format)\r\n\r\n---\r\n### ✨ II. Input Parameters (v1.1 Full List)\r\n---\r\n\r\n| Parameter Name | Type | Default | Description |\r\n|----------------|------|---------|-------------|\r\n| **a0_images** | IMAGE | \"\" | connect input image(s) from other node (Optional) |\r\n| **a1_image_dir** | STRING | \"\" | Absolute path of image folder (Required) |\r\n| **a2_page_width** | INT | 4000 | Total width of canvas (px), height auto-calculated by aspect ratio (max 50000px) |\r\n| **a3_page_aspect_ratio** | COMBO | 3:2 | Overall canvas aspect ratio (10:1 ~ 1:10, e.g., 9:16 for vertical layout) |\r\n| **a4_cols_rows_per_page** | INT | 3 | Global layout count: \u003cbr\u003e- Mode 1-4: Columns per row \u003cbr\u003e- Mode 5: Groups per column \u003cbr\u003e- Mode 6: Rows per page |\r\n| **a5_page_margin** | INT | 50 | Canvas border margin (px, 0~500) |\r\n| **a6_title_padding** | INT | 30 | Padding between title blocks (px, 0~200) |\r\n| **a7_title_draw_mode** | COMBO | 3.zoom by long side | 6 image fill modes (see Section I.1) |\r\n| **a8_title_first_position** | COMBO | start_from margin | Title block start position (vertical centering option included) |\r\n| **a9_background_style** | COMBO | Light (white) | Canvas background style (Light/Dark/Transparent) |\r\n| **a10_title_border** | COMBO | Rounded (radius=10px) | Single title block border style |\r\n| **a11_title_border_style** | COMBO | Solid | Title block border line style |\r\n| **a12_page_border** | COMBO | Rounded (radius=30px) | Whole page border style |\r\n| **a13_page_border_style** | COMBO | Solid | Page border line style |\r\n| **a14_filename_position** | COMBO | none | Filename display position (none/above/top/middle/bottom/below) |\r\n| **a15_filename_color** | COMBO | black | Filename color (16 options) |\r\n| **a97_title_save_mode** | COMBO | none | Save individual title/image mode (none/save single title/save single image) |\r\n| **a98_title_save_dir** | STRING | ./output/concat_titles | Save path for individual titles/images |\r\n| **a99_title_save_filename** | COMBO | source file name | Save filename mode（source file number/source file name/page + number）|\r\n\r\n---\r\n### ✨ III. Outputs (v1.1)\r\n---\r\n\r\n| Output Name | Type | Description |\r\n|-------------|------|-------------|\r\n| **b1_concat_images** | IMAGE | Final concatenated image tensor (multi-page as batch tensor) |\r\n| **b2_page_count** | INT | Total pages of concatenated images (for counting/renaming) |\r\n| **b3_size_per_title** | STRING | Base size of single title block (e.g., 300×300) |\r\n| **b4_valid_image_count** | INT | Total valid images read from a1_image_dir (for verification) |\r\n| **b5_title_save_path** | STRING | Final save path of individual titles/images (with timestamp) |\r\n| **b6_help_info** | STRING | Full parameter guide (connect to \"preview any\" node to view) |\r\n\r\n---\r\n### ✨ IV. Get user guide qucikly\r\n---\r\n\r\n####  ONLY by connecting one port, you can get user guide of this node tool.\r\n1. Connect `b6_help_info` to \"Preview any\" \r\n2. Drag below image `one_port.png`, which can be found in directory `./custom_nodes/Comfyui-Image-Concat/images/`, onto comfyui page\r\n3. Run this node\r\n![help_info][def11]\r\n\r\n---\r\n### ✨ V. Usage Examples\r\n---\r\n\r\n#### ✅ 1. Basic Usage (Quick Start)\r\n\r\n- (1) In ComfyUI, double-click to search for \"concat\", select `Image Concatenate(QQ2540968810)` node (under `Image Processing/concat`)\r\n\r\n- (2) Fill `a1_image_dir` with your image folder path (absolute path recommended)\r\n\r\n- (3) Connect `b1_concat_images` to \"Image Preview\" or \"Save Image\" node\r\n\r\n- (4) Adjust parameters (e.g., `a4_cols_rows_per_page` for rows/columns, `a7_title_draw_mode` for fill style)\r\n\r\n- (5) Run the node → Get concatenated images in `ComfyUI/output` directory\r\n\r\n- (6) (Optional) Connect `b6_help_info` to \"Preview Any\" node to view full parameter guide\r\n\r\n![image_concat3][def4_v1.1]\r\nV1.0 stitching image as below:\r\n![image_concat3][def4]\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat3.png`*\r\n\r\n---\r\n\r\n#### ✅ 2. Advanced Workflow Examples\r\n\r\n**(1) smaller value filler (Mode 1)**\r\n\r\n**Parameters:**\r\n- a4_n_per_rows = 5 (5 columns per row, this port name was changed to `a4_cols_rows_per_page` from v1.1)\r\n- a8_draw_mode = \"1.smaller value filler\"(this port name was changed to `a7_title_draw_mode` from v1.1)\r\n\r\n**Result:** \r\n- `b2_page_count = 4` concatenated images(For v1.0), all title blocks saved to `a14_blocks_save_dir`(this port name was changed to `a98_title_save_dir` from v1.1)\r\n\r\n![image_concat1][def5]\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat1.png`*\r\n\r\n---\r\n\r\n**(2) stretches image to fill (Mode 2)**\r\n\r\n**Parameters:**\r\n- set Parameters like the image(For v1.0) as below\r\n- Parameters for versions above V1.0 can be configured similarly to V1.0.\r\n\r\n**Result:**\r\n- `b2_page_count = 1` RGBA image (editable in Photoshop)\r\n\r\n![image_concat2][def6]\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat2.png`*\r\n\r\n---\r\n\r\n**(3) crop square by short side (Mode 4) + Vertical Centering**\r\n\r\n**Parameters:**\r\n- set Parameters like the image(For v1.0) as below\r\n- Parameters for versions above V1.0 can be configured similarly to V1.0.\r\n\r\n**Result:** \r\n- `b2_page_count = 2` vertically centered images\r\n\r\n![image_concat4][def7]\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat4.png`*\r\n\r\n---\r\n\r\n**(4) equal title width up_down (Mode 5)**\r\n\r\n**Parameters:**\r\n- a7_title_draw_mode = \"5.equal title width up_down\"\r\n- a4_cols_rows_per_page = 1 (single column)\r\n- a8_title_first_position = \"start_from margin + padding(vertical centering)\"\r\n\r\n**Result:** \r\n- `b2_page_count = 2` vertically centered images(For v1.1+)\r\n\r\n![image_concat5][def8]\r\n\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat5.png`*\r\n\r\n---\r\n\r\n**(5) equal title height left_right (Mode 6)**\r\n\r\n**Parameters:**\r\n- a7_title_draw_mode = \"6.equal title height left_right\"\r\n- a4_cols_rows_per_page = 2 (2 rows per page)\r\n- a14_filename_position = \"bottom\" (show filename at image bottom)\r\n- a15_filename_color = \"white\" (match dark background)\r\n\r\n\r\n**Result:**\r\n- `b2_page_count = 3` vertically centered images(For v1.1+)\r\n\r\n![image_concat6][def9]\r\n\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/image_concat6.png`*\r\n\r\n---\r\n\r\n**(6) input images example**\r\n\r\n**Result:**\r\n- `b2_page_count = 1` vertically centered images(For v1.1+)\r\n\r\n![from_input_images][def12]\r\n\r\n*Note: Image path: `custom_nodes/Comfyui-Image-Concat/images/from_input_images.png`*\r\n\r\n---\r\n\r\n**Source images download:**  \r\n[Google Drive](https://drive.google.com/file/d/1in6XwuYF-DbZA8zPcgrFiY4NU4y-r_zp/view?usp=drive_link) | [Baidu Netdisk](https://pan.baidu.com/s/1fu2_7Z3oOLG_LrHBd1Mk0w?pwd=gpan) (59 test images)\r\n\r\n---\r\n#### ✅ 3. Image Resizer\r\n\r\n##### use me as a Image  resize tool (Mode 3)\r\n\r\n**Parameters:**\r\n- a4_cols_rows_per_page = 1 (1 columns per row)\r\n- a5_page_margin = 0\r\n- a6_title_padding = 0\r\n- a7_title_draw_mode = zoom by long side(recommend)\r\n- a97_title_save_mode = \"save single image\"\r\n\r\n![change_size_batchly_v1.1][def10]\r\n\r\n---\r\n### ✨ VI. Installation\r\n---\r\n\r\n- ✅ **Method 1: Manual Installation (Recommended)**\r\n\r\n   (1) Navigate to ComfyUI custom nodes directory:\r\n   ```bash\r\n   cd ComfyUI/custom_nodes\r\n   ```\r\n   (2) Clone the repository:\r\n   ```bash\r\n   git clone https://github.com/shmbatom/Comfyui-Image-Concat.git\r\n   ```\r\n   (3) Restart ComfyUI service.\r\n\r\n\r\n- ✅ **Method 2: ComfyUI Manager**\r\n\r\n- (1) Open ComfyUI Manager\r\n- (2) Search for \"Comfyui-Image-Concat\"\r\n- (3) Click \"Install\"\r\n- (4) Restart ComfyUI\r\n- (5) Find the node: `Image Processing/concat` → `Image concatenate(QQ2540968810)`\r\n\r\n---\r\n\r\n### ✨ VII. Notes \u0026 Limitations\r\n---\r\n\r\n- **Output format**: All output images retain alpha channel (PNG format recommended for transparency)\r\n- **a0_images**: input images from other node. You can use `a0_images` or `a1_image_dir` as source images, but `a1_image_dir` will be IGNORED if this two ports are both setted.\r\n- **a4_cols_rows_per_page**: Columns/Rows Per Page\r\n   - For Mode 1-5: Set the fixed number of columns per row\r\n   - For Mode 6: Set the fixed number of rows per page\r\nMin:1, Max:20, Default:3\r\n- **Saved title/images**: Include borders and alpha channel (no quality loss)\r\n- **Border color**: Auto-adapts to background (white on dark, black on light/transparent)\r\n- **Centering rules**:\r\n  - **Horizontal Centering**: Auto-enabled for incomplete rows (multi-column mode)\r\n  - **Vertical Centering**: Only enabled when `a8_title_first_position = \"start_from margin + padding(vertical centering)\"`\r\n- **Maximum canvas size**: 50000px (adjust `a2_page_width` max value in node code if needed)\r\n- **Supported input formats**: PNG, JPG, JPEG, BMP, GIF, WEBP, TIFF (alpha channel only for PNG)\r\n- **Filename display rules**:\r\n  - \"above/below\" are mapped to \"top/bottom\" in \"save single image\" mode\r\n  - Font size auto-scales with title block size (5% of block min side)\r\n\r\n---\r\n\r\n### ✨ VIII. Changelog\r\n---\r\n\r\n#### v1.1 (2025/01/18)\r\n\r\n-  Add 1 optional IMAGES input port named `a0_image`.  \r\n-  Add 2 new bitmap stitching modes: equal-width vertical stitching (top to bottom), equal-height horizontal stitching (left to right)\r\n-  Optimized the tile saving mode, including three options: none/save single block/save single image\r\n-  Added the function of displaying image filenames on the stitched tiles, with customizable text colors (16 colors)\r\n-  Simply connect to the b6 port to view the usage help for this node\r\n- 🎨 Standardized the port naming on the node page\r\n\r\n---\r\n\r\n### ✨ IX. Donation\r\n---\r\n\r\nIf you find this tool helpful, you can buy me a cup of coffee ☕\r\n\r\n![donate_me][def99]\r\n\r\n---\r\n\r\n[def1]: images/backgroud.png\r\n[def2]: images/parameter.png\r\n[def3]: images/out.png\r\n[def4]: images/image_concat3.png\r\n[def4_v1.1]: images/image_concat3_v1.1.png\r\n[def5]: images/image_concat1.png\r\n[def6]: images/image_concat2.png\r\n[def7]: images/image_concat4.png\r\n[def8]: images/image_concat5_v1.1.png\r\n[def9]: images/image_concat6_v1.1.png\r\n[def10]: images/change_size_batchly_v1.1.png\r\n[def11]: images/one_port.png\r\n[def12]: images/from_input_images_node.png\r\n[def99]: images/donate.png\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshmbatom%2FComfyui-Image-Concat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshmbatom%2FComfyui-Image-Concat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshmbatom%2FComfyui-Image-Concat/lists"}