npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cornerstonejs/codec-charls

v1.2.3

Published

WASM Build of CharLS

Downloads

46,260

Readme

charls-js

JS/WebAssembly build of CharLS

Try It Out!

Try it in your browser here

Install

Install this in your JavaScript project using npm:

# NOTE - this is not published yet so won't work yet...
#npm install --save-dev charls-js 

Usage

Before using this library, you must wait for it to be initialized:

const charls = require('charlsjs')
charls.onRuntimeInitialized = async _ => {
    // Now you can use it
}

To decode a JPEG-LS image, create a decoder instance, copy the JPEG-LS bitstream into its memory space, decode it, copy the decoded pixels out of its memory space and finally, delete the decoder instance.

function decode(jpeglsEncodedBitStream) {
  // Create a decoder instance
  const decoder = new charls.JpegLSDecoder();
  
  // get pointer to the source/encoded bit stream buffer in WASM memory
  // that can hold the encoded bitstream
  const encodedBufferInWASM = decoder.getEncodedBuffer(jpeglsEncodedBitStream.length);
  
  // copy the encoded bitstream into WASM memory buffer
  encodedBufferInWASM.set(jpeglsEncodedBitStream);
  
  // decode it
  decoder.decode();
  
  // get information about the decoded image
  const frameInfo = decoder.getFrameInfo();
  const interleaveMode = decoder.getInterleaveMode();
  const nearLossless = decoder.getNearLossless();
  
  // get the decoded pixels
  const decodedPixelsInWASM = decoder.getDecodedBuffer();
  
  // TODO: do something with the decoded pixels here (e.g. display them)
  // The pixel arrangement for color images varies depending upon the
  // interleaveMode parameter, see documentation in JpegLSDecode::getInterleaveMode()
  
  // delete the instance.  Note that this frees up memory including the
  // encodedBufferInWASM and decodedPixelsInWASM invalidating them. 
  // Do not use either after calling delete!
  decoder.delete();
}

const jpeglsEncodedBitStream = // read from file, load from URL, etc
decode(jpeglsEncodedBitStream)

See examples for browsers and nodejs. Also read the API documentation for JpegLSDecoder.hpp and JpegLSEncoder.hpp

Building

See information about building here

Design

Read about the design considerations that went into this library here

Performance

Read about the encode/decode performance of this library with NodeJS 14, Google Chrome and FireFox vs Native here