node package manager

image-type

image-type Build Status

Detect the image type of a Buffer/Uint8Array

See the file-type module for more file types and a CLI.

Install

$ npm install --save image-type

Usage

Node.js
const readChunk = require('read-chunk'); // npm install read-chunk 
const imageType = require('image-type');
const buffer = readChunk.sync('unicorn.png', 0, 12);
 
imageType(buffer);
//=> {ext: 'png', mime: 'image/png'} 

Or from a remote location:

const http = require('http');
const imageType = require('image-type');
const url = 'http://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif';
 
http.get(url, res => {
    res.once('data', chunk => {
        res.destroy();
        console.log(imageType(chunk));
        //=> {ext: 'gif', mime: 'image/gif'} 
    });
});
Browser
const xhr = new XMLHttpRequest();
xhr.open('GET', 'unicorn.png');
xhr.responseType = 'arraybuffer';
 
xhr.onload = () => {
    imageType(new Uint8Array(this.response));
    //=> {ext: 'png', mime: 'image/png'} 
};
 
xhr.send();

API

imageType(input)

Returns an Object with:

Or null when no match.

input

Type: Buffer Uint8Array

It only needs the first 12 bytes.

Supported file types

  • jpg
  • png
  • gif
  • webp
  • tif
  • bmp
  • jxr
  • psd

SVG isn't included as it requires the whole file to be read, but you can get it here.

License

MIT © Sindre Sorhus