openjpegjs
This library is a JavaScript port made possible by emscripten and Chris Hafey. It is a JavaScript and WebAssembly build of OpenJPEG.
Table of Contents
...
Features
...
Installing
Using npm:
$ npm install @cornerstonejs/openjpegjs
Using yarn:
$ yarn add @cornerstonejs/openjpegjs
Using unpkg CDN:
<script src="https://unpkg.com/@???/openjpegjs"></script>
Try It Out!
Try it in your browser here
openjpegjs API
Creating an instance
const openjpegwasm = await OpenJPEGWASM;
const openjpegjs = await OpenJPEGJS;
const J2KDecoder = new openjpegjs.J2KDecoder();
const J2KEncoder = new openjpegjs.J2KEncoder();
Decoder instance methods
J2KDecoder#getEncodedBuffer([encodedBitStreamLength: int]): ArrayBuffer
J2KDecoder#getDecodedBuffer(): ArrayBuffer
J2KDecoder#readHeader(): ?
J2KDecoder#calculateSizeAtDecompositionLevel(decodeLevel: int): void
J2KDecoder#decode(): void
J2KDecoder#decodeSubResolution(decodeLevel: int, decodeLayer: int)
J2KDecoder#getFrameInfo(): FrameInfo
J2KDecoder#getNumDecomposition(): int
J2KDecoder#getIsReversible(): bool
J2KDecoder#getProgressionOrder(): int
J2KDecoder#getImageOffset(): Point
J2KDecoder#getTileSize(): Size
J2KDecoder#getTileOffset(): Point
J2KDecoder#getBlockDimensions(): Size
J2KDecoder#getNumLayers(): int
J2KDecoder#getColorSpace(): int
const fullEncodedBitStream = new Uint8Array(encodedArrayBuffer);
const numBytes = 0;
const encodedBitStream = new Uint8Array(encodedArrayBuffer, 0, fullEncodedBitStream.length -numBytes);
const encodedBuffer = decoder.getEncodedBuffer(encodedBitStream.length);
encodedBuffer.set(encodedBitStream);
decoder.decode();
const decodedBuffer = decoder.getDecodedBuffer();
const frameInfo = decoder.getFrameInfo();
const interleaveMode = 2;
display(frameInfo, decodedBuffer, interleaveMode)
Encoder instance methods
J2KEncoder#getDecodedBuffer
J2KEncoder#getEncodedBuffer
J2KEncoder#encode
J2KEncoder#setDecompositions
J2KEncoder#setQuality
J2KEncoder#setProgressionOrder
J2KEncoder#setDownSample
J2KEncoder#setImageOffset
J2KEncoder#setTileSize
J2KEncoder#setTileOffset
J2KEncoder#setBlockDimensions
J2KEncoder#setNumPrecincts
J2KEncoder#setPrecinct
J2KEncoder#setCompressionRatio
Contributing
It can be difficult to contribute if your environment is not setup correctly. I highly recommend trying out VS Code's "Dev Containers" that make it easier to share and use a consistent development environment.
Dev Containers
Requirements
- VS Code and Docker Desktop
- Remote-Containers extension
- Command Pallete -->
Remote-Containers: Open Folder in Container