is-progressive

Check if JPEG images are progressive

Usage no npm install needed!

<script type="module">
  import isProgressive from 'https://cdn.skypack.dev/is-progressive';
</script>

README

is-progressive Build Status

Check if JPEG images are progressive

Can be useful to make sure your images are progressive, which is important for performance:

Progressive JPEGs are better because they are faster. Appearing faster is being faster, and perceived speed is more important that actual speed. - Progressive JPEGs: a new best practice

The check is fast as it only reads a small part of the file.

Install

$ npm install --save is-progressive

Usage

const isProgressive = require('is-progressive');

isProgressive.file('baseline.jpg').then(progressive => {
    console.log(progressive);
    //=> false
});

isProgressive.fileSync('progressive.jpg');
//=> true
// check if a remote JPEG image is progressive
// without downloading the whole file
const https = require('https');
const isProgressive = require('is-progressive');
const url = 'https://raw.githubusercontent.com/sindresorhus/is-progressive/master/fixture/progressive.jpg';

https.get(url, res => {
    isProgressive.stream(res).then(progressive => {
        console.log(progressive);
        //=> true
    });
});

API

Prefer the file methods if you're dealing directly with files. Those methods are optimized to read in the least amount of bytes necessary to determine whether it's a progressive JPEG image.

.buffer(buffer)

Returns whether the buffer is a progressive JPEG image.

buffer

Type: Buffer

Buffer of a JPEG image.

Must be at least 65535 bytes when the file is larger than that.

.stream(stream)

Returns a Promise for a boolean indicating whether the file stream is a progressive JPEG image.

stream

Type: Object

Data stream.

.file(filepath)

Returns a Promise for a boolean indicating whether the file is a progressive JPEG image.

filepath

Type: string

Filepath to the image.

.fileSync(filepath)

Returns whether the buffer is a progressive JPEG.

filepath

Type: string

Filepath to the image.

Build-system integration

Don't use this with a build-system like gulp/grunt as you can easily make the images progressive with the imagemin (gulp/grunt-task) progressive option instead of just warning about it.

Related

License

MIT © Sindre Sorhus