48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
const sharp = require('sharp');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
async function convertSvgToPng(svgPath, pngPath, size) {
|
|
try {
|
|
const svgBuffer = fs.readFileSync(svgPath);
|
|
|
|
await sharp(svgBuffer, {
|
|
density: 300 // High DPI for better quality
|
|
})
|
|
.resize(size, size, {
|
|
fit: 'contain',
|
|
background: { r: 255, g: 255, b: 255, alpha: 0 } // Transparent background
|
|
})
|
|
.png()
|
|
.toFile(pngPath);
|
|
|
|
console.log(`✅ Created ${pngPath} (${size}x${size})`);
|
|
} catch (error) {
|
|
console.error(`❌ Error converting ${svgPath}:`, error.message);
|
|
}
|
|
}
|
|
|
|
async function main() {
|
|
const publicDir = path.join(__dirname, '..', 'public');
|
|
|
|
// Convert logo.svg to various PNG sizes
|
|
const logoPath = path.join(publicDir, 'logo.svg');
|
|
if (fs.existsSync(logoPath)) {
|
|
await convertSvgToPng(logoPath, path.join(publicDir, 'logo-512.png'), 512);
|
|
await convertSvgToPng(logoPath, path.join(publicDir, 'logo-256.png'), 256);
|
|
await convertSvgToPng(logoPath, path.join(publicDir, 'logo-128.png'), 128);
|
|
}
|
|
|
|
// Convert logo-large.svg to larger PNG sizes
|
|
const logoLargePath = path.join(publicDir, 'logo-large.svg');
|
|
if (fs.existsSync(logoLargePath)) {
|
|
await convertSvgToPng(logoLargePath, path.join(publicDir, 'logo-1024.png'), 1024);
|
|
await convertSvgToPng(logoLargePath, path.join(publicDir, 'logo-512.png'), 512);
|
|
}
|
|
|
|
console.log('\n✨ Logo conversion complete!');
|
|
}
|
|
|
|
main();
|
|
|