Logo für Webseiten-Tab implementiert
Dieser Commit ist enthalten in:
committet von
Server Deploy
Ursprung
ef153789cc
Commit
5b1f8b1cfe
80
generate-icons-sharp.js
Normale Datei
80
generate-icons-sharp.js
Normale Datei
@ -0,0 +1,80 @@
|
||||
const sharp = require('sharp');
|
||||
const fs = require('fs').promises;
|
||||
const path = require('path');
|
||||
|
||||
// Icon-Größen für PWA
|
||||
const sizes = [48, 72, 96, 128, 144, 152, 192, 384, 512];
|
||||
|
||||
async function generateIcons() {
|
||||
const svgPath = path.join(__dirname, 'frontend/assets/icons/taskmate-logo.svg');
|
||||
const outputDir = path.join(__dirname, 'frontend/assets/icons');
|
||||
|
||||
try {
|
||||
// SVG einlesen
|
||||
const svgBuffer = await fs.readFile(svgPath);
|
||||
|
||||
// Icons in verschiedenen Größen generieren
|
||||
for (const size of sizes) {
|
||||
const outputPath = path.join(outputDir, `icon-${size}x${size}.png`);
|
||||
|
||||
await sharp(svgBuffer)
|
||||
.resize(size, size)
|
||||
.png()
|
||||
.toFile(outputPath);
|
||||
|
||||
console.log(`✓ Erstellt: icon-${size}x${size}.png`);
|
||||
}
|
||||
|
||||
// Zusätzliche Icons für Shortcuts
|
||||
// Add Task Icon
|
||||
const addTaskSvg = `<svg width="96" height="96" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="96" height="96" rx="16" fill="#0A1832"/>
|
||||
<path d="M48 24v48M24 48h48" stroke="#00D4FF" stroke-width="6" stroke-linecap="round"/>
|
||||
</svg>`;
|
||||
|
||||
await sharp(Buffer.from(addTaskSvg))
|
||||
.png()
|
||||
.toFile(path.join(outputDir, 'add-task-96x96.png'));
|
||||
console.log('✓ Erstellt: add-task-96x96.png');
|
||||
|
||||
// Calendar Icon
|
||||
const calendarSvg = `<svg width="96" height="96" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="96" height="96" rx="16" fill="#0A1832"/>
|
||||
<rect x="20" y="28" width="56" height="48" rx="4" stroke="#C8A851" stroke-width="4" fill="none"/>
|
||||
<path d="M32 20v16M64 20v16M20 44h56" stroke="#C8A851" stroke-width="4" stroke-linecap="round"/>
|
||||
</svg>`;
|
||||
|
||||
await sharp(Buffer.from(calendarSvg))
|
||||
.png()
|
||||
.toFile(path.join(outputDir, 'calendar-96x96.png'));
|
||||
console.log('✓ Erstellt: calendar-96x96.png');
|
||||
|
||||
// Favicon erstellen (mehrere Größen in einer ICO-Datei)
|
||||
await sharp(svgBuffer)
|
||||
.resize(32, 32)
|
||||
.png()
|
||||
.toFile(path.join(outputDir, 'favicon-32x32.png'));
|
||||
console.log('✓ Erstellt: favicon-32x32.png');
|
||||
|
||||
await sharp(svgBuffer)
|
||||
.resize(16, 16)
|
||||
.png()
|
||||
.toFile(path.join(outputDir, 'favicon-16x16.png'));
|
||||
console.log('✓ Erstellt: favicon-16x16.png');
|
||||
|
||||
// Apple Touch Icon
|
||||
await sharp(svgBuffer)
|
||||
.resize(180, 180)
|
||||
.png()
|
||||
.toFile(path.join(outputDir, 'apple-touch-icon.png'));
|
||||
console.log('✓ Erstellt: apple-touch-icon.png');
|
||||
|
||||
console.log('\n✅ Alle Icons wurden erfolgreich generiert!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Generieren der Icons:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Script ausführen
|
||||
generateIcons();
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren