generateFavIcon
生成符合标准的 FavIcon 图标文件(ICO 格式),支持包含多个尺寸。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.sharp | Sharp | Sharp 图像处理函数 |
deps.Buffer | BufferConstructor | Buffer 构造函数 |
deps.toIco | (buffers: Buffer[]) => Promise<Buffer> | 将多个 PNG Buffer 合并为 ICO 文件的函数 |
环境要求
- sharp: 图像处理库,用于调整图像尺寸
- to-ico: ICO 文件生成库,用于将多个 PNG 图片合并为 ICO 文件
- Buffer: Node.js 内置的 Buffer 构造函数
bash
npm install sharp to-ico函数签名
typescript
function generateFavIcon(
input: Buffer,
sizes?: number[],
deps: GenerateFavIconDeps
): Promise<Buffer>
interface GenerateFavIconDeps {
sharp: Sharp
Buffer: BufferConstructor
toIco: (buffers: Buffer[]) => Promise<Buffer>
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
input | Buffer | 是 | 输入图像的 Buffer 数据 |
sizes | number[] | 否 | 需要包含在 ICO 文件中的图标尺寸数组,默认为 [16, 32] |
deps | GenerateFavIconDeps | 是 | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<Buffer> | Promise,解析为 ICO 格式的 Buffer 数据 |
工作原理
- 遍历所有指定的尺寸(默认为 16x16 和 32x32)
- 对每个尺寸:
- 使用 sharp 将图像调整到目标尺寸
- 输出为 PNG 格式
- 使用 toIco 将所有尺寸的 PNG 图片合并为一个 ICO 文件
- 返回包含所有尺寸的 ICO 文件 Buffer
生成的 ICO 文件符合标准 FavIcon 规范,可直接用于网站的 favicon.ico 文件。ICO 文件可以包含多个尺寸,浏览器会自动选择最合适的尺寸显示。