Turn images into synthwave / cyberpunk animations! An open source tool that creates animations from static images using particle waves and edge detection. Runs in real-time in the browser.
Live demo: https://collidingScopes.github.io/scanlines
- Upload any image and transform it into a dynamic synthwave/cyberpunk animation
- Customize various parameters:
- Animation speed and wave intervals
- Number and size of particles
- Turbulence and frozen particle probability
- Edge detection sensitivity
- Wave starting position
- Color schemes (particle, edge, and background colors)
- Export your creations as images or videos
- Built-in color palettes with cyberpunk/synthwave themes
- Mobile-friendly design
- No paywalls or premium features - completely free and open source
The animation is created through a multi-step process:
- Particle waves are generated at one edge of the canvas
- These waves "scan" across the canvas while searching for edges in the input image
- When an edge is detected, particles interact through physics simulation to:
- Freeze in position
- Change color
- Move in an oscillating wave pattern
- Start Position: Choose where particle waves begin (Left/Right/Top/Bottom)
- Color Palette: Select from pre-defined cyberpunk/synthwave color schemes
- Animation Parameters: Adjust speed, wave intervals, particle count, etc.
r
: Randomize all inputsc
: Choose random color palettespace
: Pause/play animationenter
: Restart animationv
: Start/stop video exports
: Save screenshotu
: Upload new image
- Built with vanilla JavaScript and HTML5 Canvas
- Uses dat.gui for the control interface
- Video export implemented using mp4-muxer
- Client-side processing - no server uploads required
- Edge detection using a variation of Sobel edge detection
-
Clone the repository:
git clone https://github.com/collidingScopes/scanlines.git
-
Navigate to the project directory:
cd scanlines
-
Since this is a static web application, you can run it using any web server. For example, using Python:
# Python 3 python -m http.server 8000 # Python 2 python -m SimpleHTTPServer 8000
Or using Node.js's
http-server
:# Install http-server globally npm install -g http-server # Run the server http-server
-
Open your browser and navigate to
http://localhost:8000
All image processing is done client-side. No images or videos are uploaded to any server - they stay on your computer only.
The tool includes built-in video export functionality, leveraging the mp4-muxer library. If you experience issues with the video export feature, you can use other free screen-recording tools like OBS Studio.
The animation uses intensive calculations for particle physics and edge detection. Performance may vary based on:
- Computer processing power
- Available memory
- Battery level (on laptops)
- Number of open browser tabs
- Image size and complexity
This project is licensed under the MIT License - see the LICENSE file for details.
Created by @stereo.drift. Feel free to reach out:
- Instagram: @stereo.drift
- Twitter: @measure_plan
- Email: stereodriftvisuals@gmail.com
If you enjoyed this, you may be interested in my other free / open source projects:
- Particular Drift - Flowing particle animations
- Video-to-ASCII - ASCII pixel art converter
- Shape Shimmer - Funky wave animations
- Colliding Scopes - Kaleidoscope animations
- Force-Field Animation - Particle-based animations
- Manual Brick Breaker - Play brick breaker by waving around your hand
If you found this tool useful, feel free to buy me a coffee. This would be much appreciated during late-night coding sessions!