56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
const sharp = require('sharp');
|
|
const fs = require('fs');
|
|
|
|
async function generateIcon512() {
|
|
try {
|
|
console.log('Generating icon-512.png from icon-source.png...');
|
|
|
|
// Check if source file exists
|
|
if (!fs.existsSync('static/icon-source.png')) {
|
|
console.error('Error: static/icon-source.png does not exist');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Generate 512x512 icon
|
|
await sharp('static/icon-source.png')
|
|
.resize(512, 512, {
|
|
fit: 'contain',
|
|
background: { r: 0, g: 0, b: 0, alpha: 0 }
|
|
})
|
|
.png()
|
|
.toFile('static/icon-512.png');
|
|
|
|
console.log('✓ Generated static/icon-512.png');
|
|
|
|
// Verify the result
|
|
const metadata = await sharp('static/icon-512.png').metadata();
|
|
const stats = fs.statSync('static/icon-512.png');
|
|
|
|
console.log(` Dimensions: ${metadata.width}x${metadata.height}`);
|
|
console.log(` Format: ${metadata.format}`);
|
|
console.log(` Size: ${Math.round(stats.size / 1024)}KB`);
|
|
|
|
// Validate
|
|
if (metadata.width !== 512 || metadata.height !== 512) {
|
|
console.error('Error: Invalid dimensions');
|
|
process.exit(1);
|
|
}
|
|
if (metadata.format !== 'png') {
|
|
console.error('Error: Invalid format');
|
|
process.exit(1);
|
|
}
|
|
if (stats.size > 200 * 1024) {
|
|
console.error('Error: File size exceeds 200KB');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log('✓ Validation passed');
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('Error generating icon:', error.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
generateIcon512();
|