-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerate-icons.mjs
More file actions
65 lines (54 loc) · 1.86 KB
/
generate-icons.mjs
File metadata and controls
65 lines (54 loc) · 1.86 KB
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
#!/usr/bin/env node
import sharp from 'sharp';
import { readFileSync, writeFileSync } from 'fs';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const svgBuffer = readFileSync(join(__dirname, 'icon.svg'));
const iconsDir = join(__dirname, 'src-tauri', 'icons');
const sizes = [32, 128, 256, 512, 1024];
async function generateIcons() {
console.log('Generating icons from SVG...');
// Generate PNG files at various sizes
for (const size of sizes) {
await sharp(svgBuffer)
.resize(size, size)
.png()
.toFile(join(iconsDir, `${size}x${size}.png`));
console.log(`✓ ${size}x${size}.png`);
// 2x version for 128px
if (size === 128) {
await sharp(svgBuffer)
.resize(256, 256)
.png()
}
}
// Base icon.png
await sharp(svgBuffer)
.resize(512, 512)
.png()
.toFile(join(iconsDir, 'icon.png'));
console.log('✓ icon.png');
// Windows Store icons
const storeLogos = [30, 44, 71, 89, 107, 142, 150, 284, 310];
for (const size of storeLogos) {
await sharp(svgBuffer)
.resize(size, size)
.png()
.toFile(join(iconsDir, `Square${size}x${size}Logo.png`));
console.log(`✓ Square${size}x${size}Logo.png`);
}
await sharp(svgBuffer)
.resize(50, 50)
.png()
.toFile(join(iconsDir, 'StoreLogo.png'));
console.log('✓ StoreLogo.png');
console.log('\n✅ All icons generated!');
console.log('\nNote: .ico and .icns files need platform-specific tools.');
console.log('Windows: Use png2ico or similar tool to create icon.ico from the PNGs');
console.log('macOS: Use iconutil or similar tool to create icon.icns');
}
generateIcons().catch(console.error);