Files

132 lines
4.2 KiB
Markdown

# BoxBox - Enhanced Version
ComfyUI custom node for interactive box/region selection with advanced features.
## 🎉 What's New in This Enhanced Version
This is an improved fork of the original [BoxBox](https://github.com/mercu-lore/BoxBox) with several bug fixes and new features:
### ✅ Bug Fixes
1. **Fixed Image Loading After ComfyUI Update**
- Updated image URL construction to use ComfyUI's API helper
- Added proper filename encoding for special characters
- Improved error handling with fallback mechanisms
2. **Fixed Backend Issues**
- Corrected temp directory usage to use ComfyUI's proper temp folder
- Fixed HTTP response format (now returns proper `web.json_response`)
- Sanitized filenames to prevent path separator issues
3. **Fixed Coordinate Scaling**
- Removed duplicate coordinate division (was happening in both frontend and backend)
- Coordinates now correctly convert from display space to original image space
4. **Fixed Intermediate Node Support**
- Added recursive node chain traversal to find source images
- Now works with processing nodes (Brightness, Blur, etc.) between LoadImage and BoxSelector
- Searches up to 20 levels deep in the node graph
5. **NumPy 2.0 Compatibility**
- Updated backend logic with explicit casting (`np.uint8`, `np.float32`)
- Fixed binary incompatibility issues in coordinate processing
6. **ComfyUI v0.12.2+ (Modern API) Support**
- Re-engineered frontend to use the modern `window.comfyAPI` system
- Eliminated "Legacy API" deprecation warnings
- Improved dialog instantiation with robust fallback mechanisms
7. **Adaptive Window Scaling**
- Fixed coordinate misalignment when the browser window is resized
- System now dynamically calculates total scale (Server Scale * Browser CSS Scale)
### 🆕 New Features
1. **Aspect Ratio Memory**
- Remembers your last selected aspect ratio using localStorage
- Persists across browser sessions and system restarts
- Keeps aspect ratio locked when drawing new selections
2. **Selection Restoration**
- Automatically restores your previous selection when reopening the selector
- Shows the blue selection box from your last session
- Allows you to adjust or modify existing selections
3. **Improved User Experience**
- Removed annoying popup alerts for small images
- Better console logging for debugging
- Image error handler with helpful messages
---
## 📦 Installation
### Method 1: ComfyUI Manager (Recommended)
1. Open ComfyUI Manager
2. Search for "BoxBox Enhanced"
3. Click Install
### Method 2: Manual Installation
```bash
cd ComfyUI/custom_nodes
git clone https://github.com/Latentnaut/BoxBox.git
```
Then restart ComfyUI.
---
## 🎯 Usage
1. Add a **LoadImage** node to your workflow
2. Add a **BoxSelector** node
3. Connect the image output to BoxSelector
4. Click **📦 Select Box** button
5. Draw a rectangular selection on your image
6. Choose an aspect ratio (optional)
7. Click **✅ Confirm**
8. Use **BoxCrop** to crop the selected region
9. Use **BoxResize** to resize the cropped image
### Supported Workflows
✅ **Direct**: LoadImage → BoxSelector → BoxCrop
✅ **With Processing**: LoadImage → Brightness → BoxSelector → BoxCrop
✅ **Complex Chains**: LoadImage → Node1 → Node2 → ... → BoxSelector
---
## 🔧 Nodes Included
- **📦 BoxSelector**: Interactive region selection with aspect ratio locking
- **✂️ BoxCrop**: Crops image based on selected coordinates
- **📐 BoxResize**: Resizes images with aspect ratio preservation
---
## 🐛 Known Issues
- Preview shows original image (not processed) when using intermediate nodes
- This is intentional for performance reasons
- Coordinates are still applied correctly to the processed image
---
## 🙏 Credits
- **Original Author**: [mercu-lore](https://github.com/mercu-lore)
- **Enhanced Version**: Latentnaut
- **Improvements**: AI-assisted development with Claude
---
## 📄 License
Same license as the original BoxBox project.
---
## 🤝 Contributing
Issues and pull requests are welcome! If you find bugs or have feature requests, please open an issue on GitHub.