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.
npm install is-progressive
import isProgressive from 'is-progressive';
console.log(await isProgressive.file('baseline.jpg'));
//=> false
isProgressive.fileSync('progressive.jpg');
//=> true
// Check if a remote JPEG image is progressive without downloading the whole file
import https from 'node:https';
import isProgressive from 'is-progressive';
const url = 'https://raw.githubusercontent.com/sindresorhus/is-progressive/main/fixture/progressive.jpg';
https.get(url, async response => {
console.log(await isProgressive.stream(response));
//=> true
});
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.
Returns whether the buffer
is a progressive JPEG image.
Type: Uint8Array
The buffer of a JPEG image.
Must be at least 65535
bytes when the file is larger than that.
Returns a Promise<boolean>
indicating whether the file stream is a progressive JPEG image.
Type: stream.Readable
A data stream with a JPEG image.
Returns a Promise<boolean>
indicating whether the file at the filePath
is a progressive JPEG image.
Type: string
The file path to the image.
Whether the file at the filePath
is a progressive JPEG.
Type: string
The file path to the image.
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.
- is-progressive-cli - CLI for this module