image-type
Detect the image type of a Buffer/Uint8Array
See the file-type module for more file types and a CLI.
Install
$ npm install image-type
Usage
Node.js
const readChunk = require('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 = 'https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif';
http.get(url, response => {
response.on('readable', () => {
const chunk = response.read(imageType.minimumBytes);
response.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:
-
ext- One of the supported file types -
mime- The MIME type
Or null when there is no match.
input
Type: Buffer | Uint8Array
It only needs the first .minimumBytes bytes.
imageType.minimumBytes
Type: number
The minimum amount of bytes needed to detect a file type. Currently, it's 4100 bytes, but it can change, so don't hardcode it.
Supported file types
jpgpnggifwebpflifcr2tifbmpjxrpsdicobpg-
jp2- JPEG 2000 -
jpm- JPEG 2000 -
jpx- JPEG 2000 heiccur-
dcm- DICOM Image File
SVG isn't included as it requires the whole file to be read, but you can get it here.
License
MIT © Sindre Sorhus