easyremote/crates/client-tauri/generate-icons.js

80 lines
2.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
const svgPath = path.join(__dirname, 'app-icon.svg');
const iconsDir = path.join(__dirname, 'icons');
// 确保icons目录存在
if (!fs.existsSync(iconsDir)) {
fs.mkdirSync(iconsDir, { recursive: true });
}
const sizes = [
{ name: '32x32.png', size: 32 },
{ name: '128x128.png', size: 128 },
{ name: '128x128@2x.png', size: 256 },
{ name: 'icon.png', size: 512 },
{ name: 'Square30x30Logo.png', size: 30 },
{ name: 'Square44x44Logo.png', size: 44 },
{ name: 'Square71x71Logo.png', size: 71 },
{ name: 'Square89x89Logo.png', size: 89 },
{ name: 'Square107x107Logo.png', size: 107 },
{ name: 'Square142x142Logo.png', size: 142 },
{ name: 'Square150x150Logo.png', size: 150 },
{ name: 'Square284x284Logo.png', size: 284 },
{ name: 'Square310x310Logo.png', size: 310 },
{ name: 'StoreLogo.png', size: 50 },
];
async function generateIcons() {
const svgBuffer = fs.readFileSync(svgPath);
for (const { name, size } of sizes) {
const outputPath = path.join(iconsDir, name);
await sharp(svgBuffer)
.resize(size, size)
.png()
.toFile(outputPath);
console.log(`Generated: ${name} (${size}x${size})`);
}
// 生成 ICO 文件 (Windows)
// 为了简单起见我们用256x256的PNG作为ICO的基础
const icoSizes = [16, 32, 48, 64, 128, 256];
const icoPngs = [];
for (const size of icoSizes) {
const buffer = await sharp(svgBuffer)
.resize(size, size)
.png()
.toBuffer();
icoPngs.push({ size, buffer });
}
// 生成简单的ICO (使用256x256作为主图标)
const ico256 = await sharp(svgBuffer)
.resize(256, 256)
.png()
.toFile(path.join(iconsDir, 'icon.ico.png'));
// 复制一个PNG作为ICO的替代Tauri会处理
await sharp(svgBuffer)
.resize(256, 256)
.png()
.toFile(path.join(iconsDir, 'icon.ico'));
console.log('Generated: icon.ico');
// 复制到根目录作为app-icon.png
await sharp(svgBuffer)
.resize(512, 512)
.png()
.toFile(path.join(__dirname, 'app-icon.png'));
console.log('Generated: app-icon.png');
console.log('\nAll icons generated successfully!');
}
generateIcons().catch(console.error);