@netlogo/synchrodecoder

3.0.0 • Public • Published

SynchroDecoder

What Is It?

SynchroDecoder is a JavaScript library for decoding images to binary data synchronously. Generally, synchronous image decoding should be avoided, but, for some use cases, it must happen synchronously, and the standard JavaScript approaches (e.g. setting an Image's src) don't allow for synchrony.

This library currently only supports JPEGs and PNGs. If synchrony is not absolutely required for your use case, we strongly recommend seeking a different solution than this library. This library is only for those desperate for synchrony.

The library takes the form of an ES6 module that is comprised of only a single function of the following type:

(base64 :: String) =>
  { array      :: Uint8ClampedArray
  , didSucceed :: Boolean
  , height     :: Number
  , width      :: Number
  }

If didSucceed is false, no other properties of the output object are guaranteed to be defined.

Otherwise, height and width are numbers of pixels. array.length is necessarily equal to height * width * 4, as array takes the format of a sequence of RGBA values.

Example

import synchroDecoder from 'path_to/synchrodecoder.mjs';

const jpeg64 = "data:image/jpeg;base64,..."

const { array, height, width, didSucceed } = synchroDecoder(jpeg64);

if (didSucceed) {
  const imageData = new ImageData(array, width, height);
  document.getElementById('canvy').getContext('2d').putImageData(imageData, 0, 0);
} else {
  alert("Error when decoding!");
}

Terms of Use

CC0

SynchroDecoder is in the public domain. To the extent possible under law, Uri Wilensky has waived all copyright and related or neighboring rights.

Package Sidebar

Install

npm i @netlogo/synchrodecoder

Weekly Downloads

1

Version

3.0.0

License

CC0-1.0

Unpacked Size

507 kB

Total Files

4

Last publish

Collaborators

  • civitasjohn
  • aaronnw
  • thebizzle
  • jblnw2142151