Skip to content

Encoding and decoding images via libjpeg in a browser or node.js

License

Notifications You must be signed in to change notification settings

gchudnov/jpeg-asm

Repository files navigation

jpeg-asm

jpeg-asm-logo

Node.js CI

Encoding and decoding images via libjpeg in JavaScript

libjpeg version: 9d of 12-Jan-2020

Installation

installing with npm:

npm install jpeg-asm --save

OR

Use /dist/jpegasm.js for a browser-friendly version of the library.

Decode JPEG

const jpegasm = require('jpeg-asm');

const buf = new ArrayBuffer(/* ... */);

// init buffer

jpegasm.decode(buf, (err, decoded) => {
  // err: Error
  // OR
  // decoded: { buffer: ArrayBuffer, width: number, height: number }
});

Encode JPEG

const jpegasm = require('jpeg-asm');

const buf = new ArrayBuffer(/* ... */);

// init buffer

const options = {
  width: X,
  height: Y,
  quality: 80
};

jpegasm.encode(buf, options, (err, encoded) => {
  // err: Error
  // OR
  // encoded: ArrayBuffer
});

Examples

The examples directory contains an example how to encode and decode an image in a browser.

API

.decode(buf, cb)

Decodes a JPEG image.

Arguments:

  • buf - source buffer: ArrayBuffer
  • cb - a callback that gets 2 arguments:
    • err - decoding Error
    • decoded - an object that describes the decoded image: { width: number, height: number, data: ArrayBuffer } where data represents colors in RGB format.
jpegasm.decode(buf, (err, decoded) => { /* ... */ });

.encode(buf, options, cb)

Encodes buffer to a JPEG format.

Arguments:

  • buf - source buffer: ArrayBuffer
  • [options] - an optional object with settings to encode an image. Supported options:
    • width - width of the image in buf
    • height- height of the image in buf
    • quality - a numberic value [0-100], describes quality of encoding. 0 - low quality, 100 - high quality.
  • cb - a callback that gets 2 arguments:
    • err - encoding Error
    • encoded - an object that describes the encoded image: { width: number, height: number, data: ArrayBuffer }
const encoded = jpegasm.encode(buf, options, (err, encoded) => { /* ... */ });

Tests

To run the tests for jpeg-asm:

npm test

Building

To compile libjpeg to javascript:

npm run build:debug
# OR
npm run build:release

Compiling details.

To build a browser-friendly version of the library, run:

npm run browser:debug
# OR
npm run browser:release

Contact

[Grigorii Chudnov] (mailto:[email protected])

License

jpeg-asm distributed under the The MIT License (MIT).

libjpeg has a custom BSD-like license (free software).