Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Node module for detecting image dimensions

License

NotificationsYou must be signed in to change notification settings

image-size/image-size

Repository files navigation

Build StatusPackage VersionDownloads

Fast, lightweight NodeJS package to get dimensions of any image file or buffer.

Key Features

  • Zero dependencies
  • Supports all major image formats
  • Works with both files and buffers
  • Minimal memory footprint - reads only image headers
  • ESM and CommonJS support
  • TypeScript types included

Supported formats

  • BMP
  • CUR
  • DDS
  • GIF
  • HEIC (HEIF, AVCI, AVIF)
  • ICNS
  • ICO
  • J2C
  • JPEG-2000 (JP2)
  • JPEG
  • JPEG-XL
  • KTX (1 and 2)
  • PNG
  • PNM (PAM, PBM, PFM, PGM, PPM)
  • PSD
  • SVG
  • TGA
  • TIFF
  • WebP

Installation

npm install image-size# oryarn add image-size# orpnpm add image-size

Usage

Passing in a Buffer/Uint8Array

Best for streams, network requests, or when you already have the image data in memory.

import{imageSize}from'image-size'// orconst{ imageSize}=require('image-size')constdimensions=imageSize(buffer)console.log(dimensions.width,dimensions.height)

Reading from a file

Best for local files. Returns a promise.

import{imageSizeFromFile}from'image-size/fromFile'// orconst{ imageSizeFromFile}=require('image-size/fromFile')constdimensions=awaitimageSizeFromFile('photos/image.jpg')console.log(dimensions.width,dimensions.height)

Note: Reading from files has a default concurrency limit of100To change this limit, you can call thesetConcurrency function like this:

import{setConcurrency}from'image-size/fromFile'// orconst{ setConcurrency}=require('image-size/fromFile')setConcurrency(123456)

Reading from a file Syncronously (not recommended)⚠️

v1.x of this library had a sync API, that internally used sync file reads.

This isn't recommended because this blocks the node.js main thread, which reduces the performance, and prevents this library from being used concurrently.

However if you still need to use this package syncronously, you can read the file syncronously into a buffer, and then pass the buffer to this library.

import{readFileSync}from'node:fs'import{imageSize}from'image-size'constbuffer=readFileSync('photos/image.jpg')constdimensions=imageSize(buffer)console.log(dimensions.width,dimensions.height)

3. Command Line

Useful for quick checks.

npx image-size image1.jpg image2.png

Multi-size

If the target file/buffer is an HEIF, an ICO, or a CUR file, thewidth andheight will be the ones of the largest image in the set.

An additionalimages array is available and returns the dimensions of all the available images

import{imageSizeFromFile}from'image-size/fromFile'// orconst{ imageSizeFromFile}=require('image-size/fromFile')const{ images}=awaitimageSizeFromFile('images/multi-size.ico')for(constdimensionsofimages){console.log(dimensions.width,dimensions.height)}

Using a URL

importurlfrom'node:url'importhttpfrom'node:http'import{imageSize}from'image-size'constimgUrl='http://my-amazing-website.com/image.jpeg'constoptions=url.parse(imgUrl)http.get(options,function(response){constchunks=[]response.on('data',function(chunk){chunks.push(chunk)}).on('end',function(){constbuffer=Buffer.concat(chunks)console.log(imageSize(buffer))})})

Disabling certain image types

import{disableTypes}from'image-size'// orconst{ disableTypes}=require('image-size')disableTypes(['tiff','ico'])

JPEG image orientation

If the orientation is present in the JPEG EXIF metadata, it will be returned by the function. The orientation value is anumber between 1 and 8 representing a type of orientation.

import{imageSizeFromFile}from'image-size/fromFile'// orconst{ imageSizeFromFile}=require('image-size/fromFile')const{ width, height, orientation}=awaitimageSizeFromFile('images/photo.jpeg')console.log(width,height,orientation)

Limitations

  1. Partial File Reading

    • Only reads image headers, not full files
    • Some corrupted images might still report dimensions
  2. SVG Limitations

    • Only supports pixel dimensions and viewBox
    • Percentage values not supported
  3. File Access

    • Reading from files has a default concurrency limit of 100
    • Can be adjusted usingsetConcurrency()
  4. Buffer Requirements

    • Some formats (like TIFF) require the full header in buffer
    • Streaming partial buffers may not work for all formats

License

MIT

Credits

not a direct port, but an attempt to have something likedabble's imagesize as a node module.


[8]ページ先頭

©2009-2025 Movatter.jp