image-type

by sindresorhus

sindresorhus / image-type

Detect the image type of a Buffer/Uint8Array

232 Stars 14 Forks Last release: over 1 year ago (v4.1.0) MIT License 41 Commits 14 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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 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 https = require('https');
const imageType = require('image-type');

const url = 'https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg';

https.get(url, response => { response.on('readable', () => { const chunk = response.read(imageType.minimumBytes); response.destroy(); console.log(imageType(chunk)); //=> {ext: 'jpg', mime: 'image/jpeg'} }); });

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 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

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.