# Blend Node ## Purpose & Use Cases The `blend` node combines two images using alpha blending techniques, allowing for sophisticated image compositing with adjustable opacity and advanced blending options. It supports transparent overlays, background removal, and color-based compositing. **Real-World Applications:** - **Watermark Application**: Add semi-transparent logos or watermarks to photos - **Background Replacement**: Composite subjects onto new backgrounds with proper edge blending - **Artistic Effects**: Create double exposures and artistic blended compositions - **Product Photography**: Combine product shots with environmental backgrounds - **UI/UX Design**: Create layered interface elements with transparency effects *[PLACEHOLDER - Add GIF showing various blending operations including opacity, transparency, and color removal]* ## Input/Output Specification ### Inputs - **Base Image**: Background or primary image (usually from `msg.payload.image1`) - **Overlay Image**: Foreground or secondary image (usually from `msg.payload.image2`) - **Blend Parameters**: Opacity and compositing settings via configuration or message properties ### Outputs - **Blended Image**: Composite result of blending both input images - **Preserved Dimensions**: Output maintains base image dimensions - **Format Options**: Raw image object or encoded file formats ## Configuration Options ### Input Paths - **Image 1 Path**: Location of base/background image (default: `msg.payload.image1`) - **Image 2 Path**: Location of overlay/foreground image (default: `msg.payload.image2`) - **Path Sources**: `msg.*`, `flow.*`, `global.*` ### Output Configuration - **Output Path**: Where to store blended result (default: `msg.payload`) - **Output Format**: Raw, JPEG, PNG, or WebP - **Quality Settings**: Compression quality for lossy formats ### Blending Parameters #### Opacity Control - **Range**: 0-100% (0 = invisible overlay, 100 = opaque overlay) - **Default**: 50% for balanced blending - **Use Cases**: Watermarks (10-30%), artistic effects (40-70%), overlays (80-95%) #### Advanced Blending Options ##### Alpha Compositing - **Enable/Disable**: Use alpha channel information for proper transparency handling - **Benefit**: Preserves transparency in PNG images and handles edge feathering - **Use Case**: Professional compositing with transparent overlays ##### Background Removal - **Enable/Disable**: Remove specific background colors from overlay image - **Background Color**: Color to remove (hex, RGB, or named color) - **Color Tolerance**: How closely colors must match for removal (0-100%) - **Use Case**: Green screen compositing, product photography ### Output Format Options - **Raw**: Standard image object (fastest for processing chains) - **JPEG**: Compressed (transparency flattened to white) - **PNG**: Full transparency preservation - **WebP**: Modern format with transparency and compression ## Performance Notes ### C++ Backend Processing - **Optimized Alpha Blending**: Hardware-accelerated blending algorithms - **Color Space Handling**: Proper color space management for accurate blending - **Memory Efficient**: In-place blending operations where possible - **Edge Handling**: High-quality edge processing for smooth compositing ### Image Requirements - **Dimension Handling**: Overlay automatically scaled/positioned to match base image - **Color Space**: Both images converted to compatible color spaces for blending - **Alpha Channel**: Proper alpha channel handling for transparency effects ## Real-World Examples ### Watermark Application ``` [Photo] → [Set as image1] ┐ [Logo] → [Set as image2] ├→ [Blend: 20% opacity] → [Watermarked Photo] ``` Add semi-transparent watermarks to protect image copyrights. ### Background Replacement ``` [Subject Photo] → [Set as image2] ┐ [New Background] → [Set as image1] ├→ [Blend: Background removal, Green] → [Composite] ``` Replace green screen backgrounds with new environments. ### Artistic Double Exposure ``` [Portrait] → [Set as image1] ┐ [Texture] → [Set as image2] ├→ [Blend: 60% opacity, Alpha compositing] → [Artistic Effect] ``` Create artistic double exposure effects. ### Product Lifestyle Shots ``` [Product Photo] → [Set as image2] ┐ [Lifestyle Scene] → [Set as image1] ├→ [Blend: 85% opacity, Alpha] → [Lifestyle Product Shot] ``` Composite products into lifestyle environments. ### UI Element Creation ``` [Background] → [Set as image1] ┐ [UI Overlay] → [Set as image2] ├→ [Blend: 90% opacity, Alpha] → [UI Component] ``` Create layered interface elements with proper transparency. ## Common Issues & Troubleshooting ### Color Matching Problems - **Issue**: Colors don't blend as expected - **Solution**: Ensure both images use compatible color spaces - **Check**: Verify image formats and color profiles ### Transparency Issues - **Issue**: Transparent areas become white or black - **Solution**: Enable alpha compositing and use PNG output format - **Requirement**: Overlay image must have actual alpha channel data ### Background Removal Artifacts - **Issue**: Incomplete or over-aggressive background removal - **Solution**: Adjust color tolerance settings and background color specification - **Optimization**: Use high-quality source images with clean backgrounds ### Dimension Mismatches - **Issue**: Overlay doesn't align properly with base image - **Behavior**: Overlay automatically scaled to match base image dimensions - **Control**: Pre-resize images if specific positioning needed ### Performance with Large Images - **Issue**: Slow blending with high-resolution images - **Optimization**: Resize images to appropriate output size before blending - **Memory**: Monitor memory usage with very large images ## Integration Patterns ### Watermarking Workflow ``` Content Image → Resize → Position Watermark → Blend → Protected Image ``` Standard content protection workflow. ### Compositing Pipeline ``` Background → Color Correction → Subject → Background Removal → Blend → Final Composite ``` Professional compositing workflow. ### Batch Watermarking ``` Image Array → Individual Blending → Watermark Application → Protected Collection ``` Process multiple images with consistent watermarking. ### Multi-Layer Composition ``` Base → Blend with Layer 1 → Blend with Layer 2 → Blend with Layer 3 → Final Result ``` Build complex compositions with multiple layers. ## Advanced Usage ### Dynamic Opacity Based on Content ```javascript // In function node before blend: if (msg.imageType === 'portrait') { msg.blendOpacity = 25; // Subtle watermark for portraits } else if (msg.imageType === 'landscape') { msg.blendOpacity = 40; // More visible for landscapes } else { msg.blendOpacity = 30; // Default opacity } ``` ### Smart Background Color Detection ```javascript // Detect and set background removal color const dominantColor = msg.backgroundAnalysis.dominantColor; msg.backgroundRemovalColor = dominantColor; msg.colorTolerance = 15; // Adjust based on background uniformity ``` ### Conditional Alpha Compositing ```javascript // Enable alpha compositing only when overlay has transparency if (msg.overlay.channels === 4) { // RGBA msg.useAlphaCompositing = true; } else { msg.useAlphaCompositing = false; } ``` ### Quality-Based Blending ```javascript // Adjust blend settings based on image quality requirements if (msg.outputUse === 'print') { msg.outputFormat = 'png'; msg.useAlphaCompositing = true; } else if (msg.outputUse === 'web') { msg.outputFormat = 'webp'; msg.outputQuality = 85; } else { msg.outputFormat = 'raw'; // For further processing } ``` ## Best Practices ### Image Preparation - Ensure both images are high quality for best blending results - Use images with compatible aspect ratios when possible - Pre-process images (color correction, sizing) before blending ### Opacity Selection - **Watermarks**: 10-30% for subtle protection without distraction - **Artistic Effects**: 40-70% for creative double exposures - **Overlays**: 80-95% for prominent but layered appearance - **Background Replacement**: Variable based on subject transparency ### Transparency Handling - Use PNG format when transparency is important - Enable alpha compositing for professional results - Test transparency appearance in final display context ### Background Removal - Use clean, uniform backgrounds for best removal results - Start with lower tolerance and increase if needed - Consider edge feathering for smoother compositing ### Performance Optimization - Resize images to final output dimensions before blending - Use raw format for processing chains - Monitor memory usage with large images - Consider batch processing strategies for multiple images ### Quality Considerations - Use appropriate output format for final destination - Consider compression settings for web vs. print use - Test blending results in intended viewing context - Maintain backup of original images before processing