Skip to content

Instantly share code, notes, and snippets.

@austintgriffith
Created July 23, 2018 15:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save austintgriffith/e79373979f8d47b23656464942668177 to your computer and use it in GitHub Desktop.
Save austintgriffith/e79373979f8d47b23656464942668177 to your computer and use it in GitHub Desktop.
Takes a collection of pngs layers and joins them for https://github.com/austintgriffith/nifties-vs-nfties
/*
Takes a collection of pngs layers and joins them for
https://github.com/austintgriffith/nifties-vs-nfties
brew install imagemagick
brew install graphicsmagick
npm install --save gm
node index.js
*/
let fs = require('fs')
, gm = require('gm');
let dir = './output';
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
let shadow4 = "./nifties/shadow-4.png"
let shadow3 = "./nifties/shadow-3.png"
let shadow2 = "./nifties/shadow-2.png"
let shadow1 = "./nifties/shadow-1.png"
let count = 0
for(bodyNumber=1;bodyNumber<=5;bodyNumber++){
for(feetNumber=1;feetNumber<=7;feetNumber++){
for(headNumber=1;headNumber<=7;headNumber++){
for(mouthNumber=1;mouthNumber<=8;mouthNumber++){
let body = "./nifties/nifties-body-"+bodyNumber+".png"
let feet = "./nifties/nifties-feet-"+feetNumber+".png"
let head = "./nifties/nifties-head-"+headNumber+".png"
let mouth = "./nifties/nifties-mouth-"+mouthNumber+".png"
count++
let filename = "./output/nifties-"+bodyNumber+"-"+feetNumber+"-"+headNumber+"-"+mouthNumber+".png"
if (!fs.existsSync(filename)){
gm()
.in("xc:transparent")
.compose("Over")
.in('-geometry', '+0+0')
.in(shadow4)
.in('-geometry', '+0+0')
.in(shadow3)
.in('-geometry', '+0+0')
.in(shadow2)
.in('-geometry', '+0+0')
.in(shadow1)
.in('-geometry', '+0+0')
.in(body)
.in('-geometry', '+0+0')
.in(feet)
.in('-geometry', '+0+0')
.in(head)
.in('-geometry', '+0+0')
.in(mouth)
.mosaic()
.write(filename, function (err) {
if (err) console.log(err);
});
}
}
}
}
}
console.log(""+count+" nifties generated")
shadow4 = "./nfties/shadow-4.png"
shadow3 = "./nfties/shadow-3.png"
shadow2 = "./nfties/shadow-2.png"
shadow1 = "./nfties/shadow-1.png"
count = 0
for(bodyNumber=1;bodyNumber<=5;bodyNumber++){
for(feetNumber=1;feetNumber<=5;feetNumber++){
for(headNumber=1;headNumber<=5;headNumber++){
for(mouthNumber=1;mouthNumber<=5;mouthNumber++){
for(extraNumber=1;extraNumber<=5;extraNumber++){
let body = "./nfties/nfties-body-"+bodyNumber+".png"
let feet = "./nfties/nfties-feet-"+feetNumber+".png"
let head = "./nfties/nfties-head-"+headNumber+".png"
let mouth = "./nfties/nfties-mouth-"+mouthNumber+".png"
let extra = "./nfties/nfties-extra-"+extraNumber+".png"
count++
let filename = "./output/nfties-"+bodyNumber+"-"+feetNumber+"-"+headNumber+"-"+mouthNumber+"-"+extraNumber+".png"
if (!fs.existsSync(filename)){
gm()
.in("xc:transparent")
.compose("Over")
.in('-geometry', '+0+0')
.in(shadow4)
.in('-geometry', '+0+0')
.in(shadow3)
.in('-geometry', '+0+0')
.in(shadow2)
.in('-geometry', '+0+0')
.in(shadow1)
.in('-geometry', '+0+0')
.in(body)
.in('-geometry', '+0+0')
.in(feet)
.in('-geometry', '+0+0')
.in(head)
.in('-geometry', '+0+0')
.in(mouth)
.in('-geometry', '+0+0')
.in(extra)
.in('-geometry', '+0+0')
.mosaic()
.write(filename, function (err) {
if (err) console.log(err);
});
}
}
}
}
}
}
console.log(""+count+" nfties generated")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment