Skip to content

egy186/icojs

Repository files navigation

icojs

npm CI Coverage Status

A JavaScript library to use ICO. Works on both Node.js and the browser.

Install

npm install icojs
import { decodeIco, isIco } from 'icojs';

A UMD bundle is also available for browsers.

<script src="node_modules/icojs/dist/ico.js"></script>

Example

Node.js:

import { readFile, writeFile } from 'node:fs/promises';
import { decodeIco } from 'icojs';

const buffer = await readFile('favicon.ico');
const images = await decodeIco(buffer, 'image/png');
// save as png files
images.forEach(image => {
  const file = `${image.width}x${image.height}-${image.bpp}bit.png`;
  const data = Buffer.from(image.buffer);
  writeFile(file, data);
});

Browser:

<input type="file" id="input-file" />
<script>
  document.querySelector('#input-file').addEventListener('change', async evt => {
    const file = evt.target.files[0];
    const buffer = await file.arrayBuffer();
    const images = await ICO.decodeIco(buffer);
    // logs images
    console.dir(images);
  });
</script>

Demo

https://egy186.github.io/icojs/demo.html

API Documentation

https://egy186.github.io/icojs/

About

A JavaScript library to parse ICO.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors