dicom-microscopy-viewer-changed
Version:
Interactive web-based viewer for DICOM Microscopy Images
84 lines (59 loc) • 2.61 kB
Markdown
JS/WebAssembly build of [CharLS](https://github.com/team-charls/charls)
Try it in your browser [here](https://chafey.github.com/charls-js/test/browser/index.html)
Install this in your JavaScript project using npm:
```bash
```
Before using this library, you must wait for it to be initialized:
``` javascript
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.
```javascript
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](test/browser/index.html) and [nodejs](test/node/index.js).
Also read the API documentation for [JpegLSDecoder.hpp](src/JpegLSDecoder.hpp) and
[](src/JpegLSEncoder.hpp)
See information about building [here](BUILDING.md)
Read about the design considerations that went into this library [here](DESIGN.md)
Read about the encode/decode performance of this library with NodeJS 14,
Google Chrome and FireFox vs Native [here](PERFORMANCE.md)