Files
CipherTalk/scripts/generate-wpf-assets.js

62 lines
2.0 KiB
JavaScript
Raw 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 path = require('path');
const fs = require('fs');
const INPUT_LOGO = path.join(__dirname, '../public/xinnian.png');
// WPF Project Directory
const OUTPUT_DIR = path.join(__dirname, '../MyCoolInstaller');
const OUTPUT_BANNER = path.join(OUTPUT_DIR, 'left_banner.png');
async function generateWpfAssets() {
console.log('正在生成 WPF 安装器资源...');
// 生成左侧通栏图片: 240x520 (Window Height is 520)
try {
const width = 240;
const height = 520;
// 1. 创建背景 (新年淡红)
const banner = await sharp({
create: {
width: width,
height: height,
channels: 4,
background: '#FFF0F0'
}
});
// 2. 准备 Logo (大一点,放在上部)
const logoBuffer = await sharp(INPUT_LOGO)
.resize(160, 160, { fit: 'contain', background: { r: 0, g: 0, b: 0, alpha: 0 } })
.toBuffer();
// 3. 准备底部装饰 (可选这里简化只放Logo)
// 也可以叠加一些红色圆或者图案来增加氛围,这里简单叠加一个半透明红色块到底部
const decorHeight = 100;
const decor = await sharp({
create: {
width: width,
height: decorHeight,
channels: 4,
background: { r: 230, g: 0, b: 18, alpha: 0.1 } // rgba(230, 0, 18, 0.1)
}
}).png().toBuffer();
// 合成
await banner
.composite([
{ input: logoBuffer, top: 60, left: 40 }, // Logo 居中 (240-160)/2 = 40
{ input: decor, top: height - decorHeight, left: 0 } //底部装饰
])
.png()
.toFile(OUTPUT_BANNER);
console.log('✅ WPF 侧边栏已生成:', OUTPUT_BANNER);
} catch (e) {
console.error('生成 WPF 资源失败:', e);
}
}
generateWpfAssets();