An attempt to replicate GitHub's default profile pictures in under 100 lines (excluding junk) using Fastify and Canvas
- Clone the repository
- Run
npm ito install dependencies - Run
./start.shto transpile and start the server (This will rebuild the source if it is daemonized)
Go to the root of the server (default: localhost:3000) for usage instructions after running the server
The default launch parameters specified in start.sh are:
node . --port 3000 --cache-removal-timer 285000 --use-cluster true| Parameter | What it does |
|---|---|
--port: Number |
Tells Fastify what port to run the webserver on, default: 3000 |
--cache-removal-timer: Number |
Time in milliseconds to remove cached rendered profile pictures, default: 285000 (4.75 minutes) |
--use-cluster: Boolean |
Enables/Disables Node.js workers/cluster, it has been implemented to spread render requests across CPU cores, default: true |
Just appending /pfp onto the root URL (like: http://gitpfp.wav.blue/pfp / http://127.0.0.1:3000/pfp ) without any parameters will generate a random string with 60 wh (6 pixels across and down) and 10 magnification
name- The text to base the profile picture onmag- Image magnification of the output imagewh- Width and Height value of the output imagecolour- Hexadecimal colour code for the pixels of the output image (Without#, e.g.?colour=e8c8e8)
Note
For the best output, make sure mag and wh are even numbers (like 20 not 27, 39, 15.323421 etc)
| Output | Request |
|---|---|
gitpfp.wav.blue/pfp?mag=1 |
|
gitpfp.wav.blue/pfp?mag=1&wh=100 |
|
gitpfp.wav.blue/pfp?mag=1&wh=200 |
|
gitpfp.wav.blue/pfp?mag=1&name=meow |
- GitHub for really cool profile pictures
- GitHub Co-Pilot for holding my hand with the super complex mathamatical stuff
- United States Naval Academy for the name list sample (
fillernames.txt)