Skip to content

Node lib to create ICO files containing PNG images.

Notifications You must be signed in to change notification settings

redoPop/ico-packer

Repository files navigation

ico-packer NPM Version CI Status

Node lib to create ICO files containing PNG images:

const fs = require('fs');
const pack = require('ico-packer');

const ico = pack([
  fs.readFileSync('16x16.png'),
  fs.readFileSync('32x32.png'),
  fs.readFileSync('48x48.png'),
]);

fs.writeFileSync('favicon.ico', ico);

Why?

ICO remains a popular format for the favicon. Historically ICO contained bitmap images, but support for PNG was introduced in Windows Vista and has been broadly adopted since. Using PNG within ICO leads to much smaller file sizes, but most icon composers still produce ICO files containing bitmap images.

This library exists to create ICO files containing PNG images. It does not convert to BMP or support BMP composition.

Limitations

This library does not resize or alter PNG image sources (use sharp, jimp, gm or others for that). You must therefore be aware that the ICO format's PNG support imposes some limitations:

  • PNG images must be <= 256px
  • PNG images must be square
  • PNG images must be 32-bit (24bit+alpha)

Apps and operating systems vary in their tolerance for these rules (Windows 10 is persnickety, macOS quite forgiving). To avoid incompatibilities, this lib insists on them.

❤️📦

About

Node lib to create ICO files containing PNG images.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published