fastimage

A module that finds the size and type of an image by fetching and reading as little data as needed.

View on GitHub

Introduction

%s %s %s %s

A module that finds the size and type of an image by fetching and reading as little data as needed.

http://sw.cowtech.it/fastimage

Installation

Just run:

npm install fastimage

Usage

The signature is fastimage.info(source, [options], [callback]).

The source argument can be:

The options object supports the following options:

If callback is not provided, the method returns a Promise.

Example

import { info } from 'fastimage' 
 
info('http://fakeimg.pl/1000x1000/', (error, data) => { 
  if (error) { 
    // ... 
  } else { 
    // ... 
  } 
}) 
 
const data = await info('http://fakeimg.pl/1000x1000/')

The callback argument (or the resolved value) will be an object with the following properties:

{ 
  "width": 1000, // The width of the image in pixels. 
  "height": 1000, // The height of the image in pixels. 
  "type": "png", // The type of the image. Can be one of the supported images formats (see section below). 
  "time": 171.43721 // The time required for the operation, in milliseconds. 
  "analyzed": 979, // The amount of data transferred (in bytes) or read (in case of files or Buffer) to identify the image. 
  "realUrl": "https://fakeimg.pl/1000x1000/", // The final URL of the image after all the redirects. Only present if the source was a URL. 
  "size": 17300, // The size of the image (in bytes). Only present if the source was a URL and  if the server returned the "Content-Length" HTTP header. 
}

Streams

Calling fastimage.stream it will return a Writable stream which will emit the info event once informations are ready.

The stream accepts only the threshold option.

import { stream } from 'fastimage' 
 
const pipe = createReadStream('/path/to/image.png').pipe(stream({ threshold: 100 })) 
 
pipe.on('info', data => { 
  // ... 
})

Supported image formats

The supported image type are (thanks to the image-size module):

ESM Only

This package only supports to be directly imported in a ESM context.

For informations on how to use it in a CommonJS context, please check this page.

Contributing to fastimage

Copyright

Copyright (C) 2015 and above Shogun (shogun@cowtech.it).

Licensed under the MIT license, which can be found at https://choosealicense.com/licenses/isc.