You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			|  | 2 years ago | |
|---|---|---|
| .. | ||
| index.d.ts | 2 years ago | |
| index.js | 2 years ago | |
| license | 2 years ago | |
| package.json | 2 years ago | |
| readme.md | 2 years ago | |
		
			
				
				readme.md
			
		
		
			
			
		
	
	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
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: Buffer | 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.