要实现这个功能,你可以使用Node.js的fs
模块来读取和写入文件,使用sharp
库来处理图片,以及使用path
模块来处理文件路径。
首先,你需要安装sharp
库,可以使用以下命令进行安装:
npm install sharp
然后,你可以使用以下代码来实现这个功能:
const fs = require('fs');
const sharp = require('sharp');
const path = require('path');
// 定义要生成的AppIcon尺寸
const sizes = [
{ size: 20, scale: 1 },
{ size: 20, scale: 2 },
{ size: 20, scale: 3 },
// 添加其他尺寸和比例
];
// 读取输入的图片
const inputPath = 'input.png';
const image = sharp(inputPath);
// 创建输出目录
const outputDir = 'AppIcon.appiconset';
fs.mkdirSync(outputDir);
// 生成每个尺寸的AppIcon
sizes.forEach(({ size, scale }) => {
const outputSize = size * scale;
const outputFilename = `AppIcon-${size}x${size}@${scale}x.png`;
const outputPath = path.join(outputDir, outputFilename);
image
.resize(outputSize, outputSize)
.toFile(outputPath, (err) => {
if (err) {
console.error(`Failed to generate ${outputPath}: ${err}`);
} else {
console.log(`Generated ${outputPath}`);
}
});
});
// 生成Contents.json
const contents = {
images: sizes.map(({ size, scale }) => ({
size: `${size}x${size}`,
scale: `${scale}x`,
filename: `AppIcon-${size}x${size}@${scale}x.png`,
})),
info: {
version: 1,
author: 'Your Name',
},
};
const contentsPath = path.join(outputDir, 'Contents.json');
fs.writeFileSync(contentsPath, JSON.stringify(contents, null, 2));
console.log(`Generated ${contentsPath}`);
在上面的代码中,你需要将input.png
替换为你要生成AppIcon的输入图片路径。然后,根据需要定义要生成的AppIcon尺寸和比例,将其添加到sizes
数组中。代码会自动根据输入图片生成对应尺寸和比例的AppIcon,并将其保存到AppIcon.appiconset
目录中。最后,代码会生成一个Contents.json
文件,描述了生成的AppIcon文件的信息。
运行上面的代码后,你将在当前目录下看到生成的AppIcon.appiconset
目录和对应的Contents.json
文件。