npm stats
  • Search
  • About
  • Repo
  • Sponsor
  • more
    • Search
    • About
    • Repo
    • Sponsor

Made by Antonio Ramirez

image-type

6.0.0

@sindresorhus

npmHomeRepoSnykSocket
Downloads:4812957
$ npm install image-type
DailyWeeklyMonthlyYearly

image-type

Detect the image type of an ArrayBuffer/Uint8Array

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

Install

npm install image-type

Usage

Node.js
import {readChunk} from 'read-chunk';
import imageType, {minimumBytes} from 'image-type';

const buffer = await readChunk('unicorn.png', {length: minimumBytes});

await imageType(buffer);
//=> {ext: 'png', mime: 'image/png'}

Or from a remote location:

import https from 'node:https';
import imageType, {minimumBytes} from 'image-type';

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

https.get(url, response => {
	response.on('readable', () => {
		(async () => {
			const chunk = response.read(minimumBytes);
			response.destroy();
			console.log(await imageType(chunk));
			//=> {ext: 'jpg', mime: 'image/jpeg'}
		})();
	});
});
Browser
const xhr = new XMLHttpRequest();
xhr.open('GET', 'unicorn.png');
xhr.responseType = 'arraybuffer';

xhr.onload = () => {
	(async () => {
		await imageType(new Uint8Array(this.response));
		//=> {ext: 'png', mime: 'image/png'}
	})();
};

xhr.send();

API

imageType(input)

Returns an Promise<object> with:

  • ext - One of the supported file types
  • mime - The MIME type

Or undefined when there is no match.

input

Type: ArrayBuffer | Uint8Array

It only needs the first minimumBytes amount of bytes.

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

  • jpg
  • png
  • gif
  • webp
  • flif
  • cr2
  • tif
  • bmp
  • jxr
  • psd
  • ico
  • bpg
  • jp2 - JPEG 2000
  • jpm - JPEG 2000
  • jpx - JPEG 2000
  • heic
  • cur
  • dcm - DICOM Image File

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

Related

  • file-type - Detect the type of a file
  • image-dimensions - Get the dimensions of an image