Skip to content

MansiSingh17/SnapGlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✨ SnapGlow

Python Node.js JavaScript Cross Platform MIT License

Lightweight cross-platform tool and library for adding stunning glow and enhancement effects to images

Quick Start β€’ Features β€’ Documentation β€’ Contributing


🎯 About

SnapGlow is a powerful yet lightweight image enhancement tool designed for quick prototyping, batch processing, and seamless integration into larger image-processing pipelines. Whether you're enhancing photos for social media, creating visual effects, or building an automated image processing workflow, SnapGlow provides the tools you need with minimal overhead.


✨ Features

🌟 Effects & Filters

  • βœ… Glow & Bloom Filters
    • Adjustable strength (0.0 - 1.0)
    • Customizable radius
  • βœ… Color Grading Tools
    • Brightness adjustment
    • Contrast control
    • Saturation tuning
  • βœ… Basic Retouch Tools

πŸ› οΈ Development Features

  • βœ… CLI for Batch Processing
  • βœ… Simple Programmatic API
  • βœ… Dependency-Light Core
  • βœ… Plugin-Friendly Architecture
  • βœ… Cross-Platform Support
    • macOS
    • Linux
    • Windows

πŸš€ Quick Start

πŸ“₯ Clone the Repository

git clone https://github.com/<your-org>/SnapGlow.git
cd SnapGlow

πŸ”§ Build & Install

Node.js / JavaScript Setup ```bash # Install dependencies npm install

Build the project

npm run build

Optional: Link globally for CLI access

npm link


</details>

<details>
<summary><b>Python Setup</b></summary>
```bash
# Create virtual environment
python -m venv .venv

# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install in development mode
pip install -e .

πŸ’» Usage

πŸ–₯️ CLI Usage

# Apply default glow to a single image
snapglow input.jpg output.jpg --glow 0.6 --radius 30

# Batch process an entire directory
snapglow --input ./photos --output ./processed --glow 0.5

# Apply multiple effects
snapglow input.jpg output.jpg --glow 0.7 --brightness 1.2 --saturation 1.1

# Use custom blend mode
snapglow input.jpg output.jpg --glow 0.8 --blend-mode screen

πŸ“š Programmatic Usage

JavaScript Example ```javascript const { applyGlow, applyEffects } = require("snapglow");

// Simple glow effect await applyGlow("input.jpg", "output.jpg", { strength: 0.6, radius: 30 });

// Multiple effects await applyEffects("input.jpg", "output.jpg", { glow: { strength: 0.6, radius: 30 }, brightness: 1.2, contrast: 1.1, saturation: 1.05 });


</details>

<details>
<summary><b>Python Example</b></summary>
```python
from snapglow import apply_glow, apply_effects

# Simple glow effect
apply_glow('input.jpg', 'output.jpg', strength=0.6, radius=30)

# Multiple effects
apply_effects('input.jpg', 'output.jpg', 
    glow={'strength': 0.6, 'radius': 30},
    brightness=1.2,
    contrast=1.1,
    saturation=1.05
)

βš™οΈ Configuration

πŸ“‹ Parameters

Parameter Type Range Default Description
strength float 0.0 - 1.0 0.5 Glow effect intensity
radius integer 1 - 100 25 Glow radius in pixels
blend_mode string normal / screen / add screen Blending mode for glow effect
brightness float 0.0 - 2.0 1.0 Brightness adjustment
contrast float 0.0 - 2.0 1.0 Contrast adjustment
saturation float 0.0 - 2.0 1.0 Saturation adjustment

πŸ“ Configuration File

Create a snapglow.config.json or snapglow.config.yaml:

JSON Example:

{
  "glow": {
    "strength": 0.6,
    "radius": 30,
    "blend_mode": "screen"
  },
  "adjustments": {
    "brightness": 1.1,
    "contrast": 1.05,
    "saturation": 1.1
  }
}

YAML Example:

glow:
  strength: 0.6
  radius: 30
  blend_mode: screen

adjustments:
  brightness: 1.1
  contrast: 1.05
  saturation: 1.1

πŸ§ͺ Testing

Run the test suite to ensure everything works correctly:

# Node.js
npm test

# Python
pytest

# With coverage
npm run test:coverage  # or: pytest --cov

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

πŸ“ Contribution Guidelines

  1. πŸ› Report Bugs: Open an issue with detailed reproduction steps
  2. πŸ’‘ Suggest Features: Discuss major changes in an issue first
  3. πŸ”§ Submit PRs:
    • Fork the repository
    • Create a feature branch (git checkout -b feature/AmazingFeature)
    • Commit your changes (git commit -m 'Add some AmazingFeature')
    • Push to the branch (git push origin feature/AmazingFeature)
    • Open a Pull Request

🎨 Code Standards

  • Follow the existing code style
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting

πŸ“– See CONTRIBUTING.md for detailed guidelines


πŸ—οΈ Architecture

SnapGlow/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ core/           # Core image processing algorithms
β”‚   β”œβ”€β”€ filters/        # Glow and enhancement filters
β”‚   β”œβ”€β”€ cli/            # Command-line interface
β”‚   └── api/            # Programmatic API
β”œβ”€β”€ plugins/            # Plugin system for extensions
β”œβ”€β”€ tests/              # Unit and integration tests
β”œβ”€β”€ docs/               # Documentation
└── examples/           # Usage examples

πŸ“Š Performance

  • πŸš€ Fast Processing: Optimized algorithms for quick results
  • πŸ’Ύ Low Memory: Efficient memory usage even with large images
  • πŸ“¦ Small Footprint: Minimal dependencies for easy deployment
  • ⚑ Batch Friendly: Process hundreds of images efficiently

πŸ›£οΈ Roadmap

  • GPU acceleration support
  • Additional blend modes (multiply, overlay, soft light)
  • Advanced color grading (curves, levels)
  • Real-time preview in CLI
  • Web-based GUI
  • Docker container support
  • Cloud processing API

🌐 Resources

πŸ“š Documentation & Support

Documentation Issues Discussions


πŸ“ž Contact


Made with ✨ by developers who love beautiful images

⭐ Star this repo if you find it useful! ⭐

GitHub Stars GitHub Forks

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages