![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
A blazing-fast and compact JavaScript library dedicated to efficiently decoding JPEG images.
Using npm:
npm install jay-peg
Using yarn:
yarn add jay-peg
Use the decoder
providing a JPEG data buffer as input.
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:
[
{
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",
},
];
decoder(buffer: Buffer | Uint8Array): Array<ImageMarker>
The decoder
function accepts a JPEG buffer as its sole argument and returns an array of image markers.
buffer
: A Buffer or Uint8Array containing the JPEG image data.An array of objects representing various markers found in the JPEG image.
ImageMarker
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.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 imageFor 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
FAQs
Performant JPEG decoder
We found that jay-peg demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.