-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate-image-variants.js
73 lines (60 loc) · 2.07 KB
/
generate-image-variants.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const { glob } = require("glob");
const { execSync } = require("child_process");
const fs = require("fs");
const VARIANT_SIZES = [16, 32, 64, 128, 256];
function generateResizeVariants(f) {
for (resizeTo of VARIANT_SIZES) {
let resizeName = f.replace(".png", `-size-${resizeTo}.png`);
execSync(
`convert -resize ${resizeTo}x${resizeTo} ${f} ${resizeName}`,
(error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
}
);
console.log(`Generated file: ${resizeName}`);
}
return;
}
function generateBackgroundVariant(f) {
let bgWhite = f.replace("bg-transparent", "bg-white");
let bgBlack = f.replace("bg-transparent", "bg-black");
if (f.includes("white")) {
execSync(
`convert -background black -alpha remove -alpha off ${f} ${bgBlack}`,
(error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
}
);
console.log(`Generated file: ${bgBlack}`);
} else if (f.includes("black")) {
execSync(
`convert -background white -alpha remove -alpha off ${f} ${bgWhite}`,
(error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
}
);
console.log(`Generated file: ${bgWhite}`);
}
return;
}
// CLEAR OLD FILES
let bgBlackFiles = glob.sync(__dirname + "/src/static/images/**/*bg-black*");
let bgWhiteFiles = glob.sync(__dirname + "/src/static/images/**/*bg-white*");
let bgTransFiles = glob.sync(__dirname + "/src/static/images/**/*bg-transparent-size*");
let allPriorGenFiles = bgBlackFiles.concat(bgWhiteFiles, bgTransFiles);
allPriorGenFiles.map((f) => fs.unlinkSync(f));
// RUN BLACK AND WHITE BACKGROUND GENERATION
bgTransOrigs = glob.sync(__dirname + "/src/static/images/**/*-bg-transparent.png");
bgTransOrigs.map((f) => generateBackgroundVariant(f));
// RUN ALL ICON SIZES GENERATION
allIcons = glob.sync(__dirname + "/src/static/images/icon/*.png");
allIcons.map((f) => generateResizeVariants(f));