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
Just run:
npm install fastimage
The signature is fastimage.info(source, [options], [callback])
.
The source
argument can be:
http
and https
protocol are supported).The options
object supports the following options:
threshold
: The maximum about of data (in bytes) to downloaded or read before giving up. Default is 4096
.timeout
: The maximum time (in milliseconds) to wait for a URL to be downloaded before giving up. Default is 30000
(30 s).userAgent
: The user agent to use when making HTTP(S) requests. Default is fastimage/$VERSION
.If callback
is not provided, the method returns a Promise
.
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. }
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 => { // ... })
The supported image type are (thanks to the image-size module):
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.
Copyright (C) 2015 and above Shogun (shogun@cowtech.it).
Licensed under the MIT license, which can be found at https://choosealicense.com/licenses/isc.