Performant JPEG decoder
npm install jay-pegA blazing-fast and compact JavaScript library dedicated to efficiently decoding JPEG images.
Using npm:
``bash`
npm install jay-peg
Using yarn:
`bash`
yarn add jay-peg
Use the decoder providing a JPEG data buffer as input.
`javascript
import JPEG from 'jay-peg';
const jpegBuffer = / your JPEG buffer here /;
const imageMarkers = JPEG.decoder(jpegBuffer);
console.log(imageMarkers);
`
The output consists of a structured array of image markers:
`javascript`
[
{
type: 65496,
name: "SOI",
},
{
type: 65505,
name: "EXIF",
length: 16382,
identifier: "Exif\x00\x00",
entries: [Object],
},
{
type: 65499,
name: "DAC",
length: 132,
tables: [[Object], [Object]],
},
// ... and so forth
{
type: 65497,
name: "EOI",
},
];
The decoder function accepts a JPEG buffer as its sole argument and returns an array of image markers.
#### Parameters
- buffer: A Buffer or Uint8Array containing the JPEG image data.
#### Returns
An array of objects representing various markers found in the JPEG image.
Each ImageMarker object in the output array adheres to the following structure:
- type (Number): The marker type.name
- (String): The marker name.length
- (Number): The length of the marker data.
- Additional properties specific to certain marker types.
Performance is a key focus of jay-peg. 4 sizes of images were benchmarked:
- small: 300 × 150, 8KB imagemedium
- : 800 × 600, 70KB imagelarge
- : 1920 × 1080, 332KB imagehuge
- : 2448×3264, 2.2MB image
For each of these, the decoding speed was measured as follows:
``
Benchmarked: small: x 13,393 ops/sec ±4.77% (96 runs sampled)
Benchmarked: medium: x 12,894 ops/sec ±0.10% (99 runs sampled)
Benchmarked: large: x 9,241 ops/sec ±0.25% (99 runs sampled)
Benchmarked: huge: x 2,672 ops/sec ±0.12% (100 runs sampled)
_Measures were taken in an MacBook Air 2024, Apple M3 w/16GB of RAM._
jay-peg` is released under the MIT License