Detect the image type of an ArrayBuffer/Uint8Array
See the file-type
module for more file types and a CLI.
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'} })(); }); });
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();
Returns an Promise<object>
with:
ext
- One of the supported file typesmime
- The MIME typeOr undefined
when there is no match.
Type: ArrayBuffer | Uint8Array
It only needs the first minimumBytes
amount of bytes.
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.
jpg
png
gif
webp
flif
cr2
tif
bmp
jxr
psd
ico
bpg
jp2
- JPEG 2000jpm
- JPEG 2000jpx
- JPEG 2000heic
cur
dcm
- DICOM Image FileSVG isn't included as it requires the whole file to be read, but you can get it here.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4