An interactive, web-based image manipulation playground focused on building intuition for what vision models “see”.
Most image processing runs client-side (Canvas + typed utilities) for instant feedback. A small optional Flask API is included under server/.
- Upload an image with drag-and-drop
- RGB channel overrides (set R/G/B channels to chosen values)
- Convolution kernels
- Presets (Sobel/Scharr, Laplacian, blur, sharpen, LoG, etc.)
- Custom kernel editing
- Optional multi-step kernel pipeline (chain multiple kernels)
- Before/after comparisons with sliders
- Download processed output as PNG
- React + TypeScript
- Vite
- Tailwind CSS + shadcn/ui (Radix primitives)
@tanstack/react-query(app scaffolding)
- Python Flask
- Pillow (PIL)
- Flask-CORS
- Node.js 16+
- npm
cd client
npm install
npm run devVite runs on http://localhost:8080.
The UI currently performs processing in the browser, but the repo contains a Flask endpoint you can use for server-side processing.
cd server
python -m venv .venv
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
pip install flask pillow flask-cors gunicorn
python app.pyThe server listens on http://localhost:5000.
Note: server/app.py currently enables CORS for a specific deployed origin. For local development, you may need to adjust the CORS(...) origin list.
cd client
npm run build
npm run previewImage_Manipulator/
client/ # React frontend (Vite)
server/ # Optional Flask API
app.py
README.md
Accepts a multipart form upload and returns a base64 data: URL.
image(file)grid_size(string/int, default3)rgb_values(JSON string, e.g.{ "red": 0, "green": 0, "blue": 0 })kernel_values(JSON string, e.g.[[0,-1,0],[-1,5,-1],[0,-1,0]])rgb_modified(true/false)kernel_modified(true/false)
Response:
image:data:image/png;base64,...- plus echo fields like
grid_size,rgb_values,kernel_values
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details