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
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
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.
Related
- file-type - Detect the type of a file
- image-dimensions - Get the dimensions of an image