3.0.0 • Published 5 years ago

inkjet v3.0.0

Weekly downloads
282
License
MIT
Repository
github
Last release
5 years ago

inkjet-logo

Node.js CI

JPEG-image decoding, encoding & EXIF reading library for a browser and node.js

browser-matrix

Installation

installing with npm:

npm install inkjet --save

In browser

To use inkjet in a browser, use inkjet.js or inkjet.min.js in /dist directory, or build it manually:

npm install
npm run browser

Usage

Decoding, encoding and EXIF extraction operations are offloaded to WebWorkers if the environment supports them.

Decode JPEG

var inkjet = require('inkjet');

var filepath = './images/js_logo-4-2-0.jpg';
var buf = fs.readFileSync(filepath);

inkjet.decode(buf, function(err, decoded) {
  // decoded: { width: number, height: number, data: Uint8Array }
});

Encode JPEG

var inkjet = require('inkjet');

var width = 320;
var height = 180;
var frameData = new Buffer(width * height * 4);
var i = 0;

while (i < frameData.length) {
  frameData[i++] = 0xFF; // R, red
  frameData[i++] = 0x00; // G, green
  frameData[i++] = 0x00; // B, blue
  frameData[i++] = 0xFF; // A, alpha - ignored in JPEGs
}

var buf = frameData;
var options = {
  width: width,
  height: height,
  quality: 80
};

inkjet.encode(buf, options, function(err, encoded) {
  // encoded: { width: number, height: number, data: Uint8Array }
});

Read EXIF

var inkjet = require('inkjet');

var filepath = './images/js_logo-exif.jpg';
var buf = fs.readFileSync(filepath);
inkjet.exif(buf, function(err, metadata) {
  // metadata -- an object that maps EXIF tags to string values
});

Deduce image type

var inkjet = require('inkjet');

var filepath = './images/js_logo-4-2-0.jpg';
var buf = fs.readFileSync(filepath);
inkjet.magic(buf, function(err, data) {
  // data -- an object that contains mime-type and extension
});

Image information

var inkjet = require('inkjet');

var filepath = './images/js_logo-4-2-0.jpg';
var buf = fs.readFileSync(filepath);
inkjet.info(buf, function(err, data) {
  // data -- an object that contains width, height, mime type and extension data
});

API

.decode(buf, options, cb);

Decodes a JPEG image.

Arguments:

  • buf - source buffer, one of the following types: Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray
  • [options] - an optional object with settings to decode an image. Supported options:
    • width - override image width
    • height - override image height
  • cb - a callback that gets 2 arguments:
    • err - decoding Error
    • decoded - an object that describes the decoded image: { width: number, height: number, data: Uint8Array } where data represents colors in RGBA format.
inkjet.decode(buf, function(err, decoded) {
  // ...
});

.encode(buf, options, cb);

Encodes the provided buffer to a JPEG format.

Arguments:

  • buf - source buffer, one of the following types: Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray
  • [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: Uint8Array }
inkjet.encode(buf, function(err, encoded) {
  // ...
});

.exif(buf, options, cb);

Get EXIF metadata for the image. The metadata tags defined in the Exif standard cover date and time information, camera settings, descriptions, resolution and location information.

Arguments:

  • buf - source buffer, one of the following types: Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray
  • [options] - an optional object with settings to encode an image. Supported options:
    • hasMakerNote - exclude MakerNote tag from metadata. Default value: true, MakerNote tag is excluded.
  • cb - a callback that gets 2 arguments:
    • err - exif extraction Error
    • metadata - metadata object, a set of tags and their values.
inkjet.exif(buf, function(err, metadata) {
  // ...
});

.magic(buf, cb);

Deduce image type (mime type and extension) for the provided buffer.

Arguments:

  • buf - source buffer, one of the following types: Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray
  • cb - a callback that gets 2 arguments:
    • err - Error object
    • data - data object { "mimeType": string, "extension": string }
inkjet.magic(buf, function(err, data) {
  // ...
});

.info(buf, cb);

Get image information without reading and decoding an image.

Arguments:

  • buf - source buffer, one of the following types: Buffer|ArrayBuffer|Uint8Array|Uint8ClampedArray
  • cb - a callback that gets 2 arguments:
    • err - Error object
    • data - data object { "type": string, "mimeType": string, "extension": string, "width": number, "height: number" }
inkjet.info(buf, function(err, data) {
  // data: {
  //   type: "image"
  //   mimeType: ...
});

Tests

To run the tests for inkjet in Node.js:

npm test

To run tests in a browser:

npm run bundle:test

a bundle file inkjet-test-bundle.js with all tests will be generated in inkjet/test/browser directory.

Open inkjet/test/browser/index.html in the target browser. Tests will run automatically.

Contact

Grigorii Chudnov

License

Distributed under the The MIT License (MIT).

3.0.0-rc1

5 years ago

3.0.0

5 years ago

3.0.0-rc0

5 years ago

2.1.2

9 years ago

2.1.1

9 years ago

2.0.2

10 years ago

2.0.1

10 years ago

2.0.0

10 years ago

1.2.0

11 years ago

1.1.1

11 years ago

1.1.0

11 years ago

1.0.1

11 years ago

1.0.0

11 years ago