You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
const Jimp = require("jimp")
|
|
|
|
let base, bottom, middle, top
|
|
|
|
async function generateGlob(hue, satBoost) {
|
|
|
|
const constructed = await base
|
|
.clone()
|
|
.composite(
|
|
bottom.clone().color([
|
|
{apply: 'hue', params: [hue]}, {apply: 'saturate', params: [satBoost]}
|
|
]),
|
|
0,
|
|
0,
|
|
{ mode: Jimp.BLEND_SOURCE_OVER }
|
|
)
|
|
.composite(
|
|
middle.clone().color([
|
|
{apply: 'hue', params: [hue]}, {apply: 'saturate', params: [satBoost]}
|
|
]),
|
|
0,
|
|
0,
|
|
{ mode: Jimp.BLEND_SOURCE_OVER }
|
|
)
|
|
.composite(
|
|
top.clone().color([
|
|
{apply: 'hue', params: [hue]}, {apply: 'saturate', params: [satBoost]}
|
|
]),
|
|
0,
|
|
0,
|
|
{ mode: Jimp.BLEND_SOURCE_OVER }
|
|
)
|
|
return constructed
|
|
}
|
|
|
|
async function main() {
|
|
base = await Jimp.read('./web/public/img/base.png')
|
|
bottom = await Jimp.read('./web/public/img/bottom.png')
|
|
middle = await Jimp.read('./web/public/img/middle.png')
|
|
top = await Jimp.read('./web/public/img/top.png')
|
|
for (let i=0; i<1800; i++) {
|
|
if ( i%100 === 0) {
|
|
process.stdout.write('x')
|
|
} else { process.stdout.write('.') }
|
|
const hue = i/5
|
|
const satBoost = i % 100
|
|
const result = await generateGlob(hue,satBoost)
|
|
await result.write('./allGlobs/' + i + '.png')
|
|
}
|
|
}
|
|
|
|
main()
|