Skip to content

NetLogo/SynchroDecoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A JavaScript library for synchronously decoding JPEGs and PNGs to `ImageData`

Resources

Stars

Watchers

Forks

Packages

No packages published