Skip to content

generateFavIcon

生成符合标准的 FavIcon 图标文件(ICO 格式),支持包含多个尺寸。

前置依赖

依赖参数

参数名类型说明
deps.sharpSharpSharp 图像处理函数
deps.BufferBufferConstructorBuffer 构造函数
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>
}

参数

参数名类型必填说明
inputBuffer输入图像的 Buffer 数据
sizesnumber[]需要包含在 ICO 文件中的图标尺寸数组,默认为 [16, 32]
depsGenerateFavIconDeps依赖注入对象

返回值

类型说明
Promise<Buffer>Promise,解析为 ICO 格式的 Buffer 数据

工作原理

  1. 遍历所有指定的尺寸(默认为 16x16 和 32x32)
  2. 对每个尺寸:
    • 使用 sharp 将图像调整到目标尺寸
    • 输出为 PNG 格式
  3. 使用 toIco 将所有尺寸的 PNG 图片合并为一个 ICO 文件
  4. 返回包含所有尺寸的 ICO 文件 Buffer

生成的 ICO 文件符合标准 FavIcon 规范,可直接用于网站的 favicon.ico 文件。ICO 文件可以包含多个尺寸,浏览器会自动选择最合适的尺寸显示。