Lightweight detection of local or remote images' type, orientation & size in pure Javascript.
This module detect informations about local or remote images. For remote images, it streams the data only until it finds information.
Images in the following formats are supported: GIF, HEIC, HEIF, AVIF, J2C, JP2, JPEG, PNG, SVG & WebP.
# pnpm
pnpm add @jcayzac/image-information
# bun
bunx add @jcayzac/image-information
# npm
npx add @jcayzac/image-information
# yarn
yarn add @jcayzac/image-information
# deno
deno add npm:@jcayzac/image-information
import { imageInformation } from '@jcayzac/image-information'
// Remote URL
const info = await imageInformation('https://example.com/image.jpg')
if (info !== undefined) {
const {
// intrinsic width.
width,
// intrinsic height.
height,
// inferred file extension (doesn't care about URL).
extension,
// inferred MIME type.
type,
// detected EXIF orientation, if any.
orientation,
} = info
console.log(`Found information:`, info)
}
// File URL
const info2 = await imageInformation('file:///tmp/image.jpg')
[!NOTE]
The function accepts strings as a convenience, but those are expected to represent valid URLs. For local images, you must use the
file://
URL scheme. Passing paths directly will not work.
The probe()
function can be used to get information about an image from a buffer (either an Uint8Array
or a node Buffer
).
import { readFile } from 'node:fs/promises'
import { probe } from '@jcayzac/image-information'
const buffer = await readFile('image.jpg')
const info = await probe(buffer)
If you like anything here, consider buying me a coffee using one of the following platforms: