地方网站做哪些内容百度网站的域名地址
因为我的一个项目是使用GitHub action来实现编译和部署的,而且这个android项目的icon很有可能会发生变化,所以需要在脚本中实现自动化生成icon的功能,所以这里就写了一个js脚本来做这个事情
这个脚本可以输入一个图片地址,然后生成android项目的icon图标。
脚本文件内容:
const sharp = require('sharp')
const fs = require('fs-extra')
const path = require('path')
const { program } = require('commander')const DENSITIES = {mdpi: 48,hdpi: 72,xhdpi: 96,xxhdpi: 144,xxxhdpi: 192,
}program.requiredOption('-i, --input <file>', 'Path to source PNG').option('-o, --output <dir>', 'Output directory', 'res').option('--rounded', 'Apply circular mask to icons').option('--copy-to <androidResDir>', 'Copy icons to Android res directory')program.parse(process.argv)
const options = program.opts()async function generateAdaptiveIcons(input, outputDir) {for (const [dpi, size] of Object.entries(DENSITIES)) {const mipmapDir = path.join(outputDir, `mipmap-${dpi}`)await fs.ensureDir(mipmapDir)const foregroundPath = path.join(mipmapDir,'ic_launcher_foreground.png')const backgroundPath = path.join(mipmapDir,'ic_launcher_background.png')const legacyPath = path.join(mipmapDir, 'ic_launcher.png')const img = sharp(input).resize(size, size)const rounded = options.rounded? img.composite([{input: Buffer.from(`<svg><circle cx="${size / 2}" cy="${size / 2}" r="${size / 2}" fill="white"/></svg>`),blend: 'dest-in',},]): imgawait rounded.toFile(foregroundPath)await sharp({create: {width: size,height: size,channels: 4,background: '#FFFFFF',},}).png().toFile(backgroundPath)// legacy fallbackawait rounded.toFile(legacyPath)}// Generate XMLconst xmlPath = path.join(outputDir, 'mipmap-anydpi-v26')await fs.ensureDir(xmlPath)await fs.writeFile(path.join(xmlPath, 'ic_launcher.xml'),`
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"><background android:drawable="@mipmap/ic_launcher_background"/><foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>`.trim())await fs.writeFile(path.join(xmlPath, 'ic_launcher_round.xml'),`
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"><background android:drawable="@mipmap/ic_launcher_background"/><foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>`.trim())console.log('✅ Adaptive icons generated.')
};(async () => {const { input, output, copyTo } = optionsconst outPath = path.resolve(output)await generateAdaptiveIcons(input, outPath)if (copyTo) {const dest = path.resolve(copyTo)await fs.copy(outPath, dest, { overwrite: true })console.log(`📦 Icons copied to Android res dir: ${dest}`)}
})()
使用说明:
node ./generateIcons.cjs -i pakeplus.png --copy-to app/src/main/res
生成圆角图标:
node ./generateIcons.cjs -i pakeplus.png --rounded --copy-to app/src/main/res
最后生成的结果: