# @cornerstonejs/codec-openjpeg

> JS/WebAssembly build of [OpenJPEG](https://github.com/uclouvain/openjpeg)

Latest version **1.3.6** (published 2026-09-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install @cornerstonejs/codec-openjpeg
pnpm add @cornerstonejs/codec-openjpeg
yarn add @cornerstonejs/codec-openjpeg
bun add @cornerstonejs/codec-openjpeg
```

## Health

**Score 65/100 (B)** — status: active.

Positive: esm support; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 1.3.6 |
| Published | 2026-09-09 |
| First published | 2021-02-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=0.14 |
| Dependencies | 0 |
| Unpacked size | 2 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 27 |
| Maintainers | jamesapetts, cornerstonejs-bot, swederik, sedghi, wayfarer3130, jbocce |

## Links

- npm: https://www.npmjs.com/package/@cornerstonejs/codec-openjpeg
- Repository: https://github.com/cornerstonejs/codecs
- Homepage: https://github.com/cornerstonejs/codecs#readme
- Issues: https://github.com/cornerstonejs/codecs/issues
- npm.io page: https://npm.io/package/@cornerstonejs/codec-openjpeg

## Recent versions

- 1.3.6 (latest) — 2026-09-09
- 1.3.5 — 2026-09-04
- 1.3.3 — 2026-09-01
- 1.3.2 — 2026-08-13
- 1.3.1 — 2026-08-11
- 1.3.0 — 2025-10-22
- 1.2.4 — 2024-06-14
- 1.2.3 — 2024-02-08
- 1.2.2 — 2023-02-13
- 1.2.1 — 2023-01-03
- 1.2.0 — 2022-12-22
- 1.1.0 — 2022-12-21
- 0.2.1 — 2022-10-11
- 0.2.0 — 2022-02-09
- 0.1.1 — 2022-02-09
- … 5 more at https://npm.io/package/@cornerstonejs/codec-openjpeg/versions

## README

# openjpegjs



This JavaScript/WebAssembly build of [OpenJPEG](https://github.com/uclouvain/openjpeg) is made possible by [Emscripten](https://emscripten.org/) and [Chris Hafey](https://github.com/chafey).

## Table of Contents

...

## Features


## Installing

Using npm:

```bash
$ npm install @cornerstonejs/codec-openjpeg
```

Using pnpm:

```bash
$ pnpm add @cornerstonejs/codec-openjpeg
```

Using unpkg CDN:

```html
<script src="https://unpkg.com/@cornerstonejs/codec-openjpeg"></script>
```

## Try It Out!

Try it in your browser [here](https://chafey.github.io/openjpegjs/test/browser/index.html)


## openjpegjs API

### Creating an instance

```js
// JS / WASM promises resolve the library
const openjpegwasm = await OpenJPEGWASM;
const openjpegjs = await OpenJPEGJS;

// Decoder
const J2KDecoder = new openjpegjs.J2KDecoder();

// Encoder
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`

```js
// ~ Setup
// const encodedArrayBuffer = ...;
const fullEncodedBitStream = new Uint8Array(encodedArrayBuffer);
const numBytes = 0;
const encodedBitStream = new Uint8Array(encodedArrayBuffer, 0, fullEncodedBitStream.length -numBytes);

// ~ DECODE
const encodedBuffer = decoder.getEncodedBuffer(encodedBitStream.length);
encodedBuffer.set(encodedBitStream);
decoder.decode(); // or .decodeSubResolution() to go by layer or level

// ~ Display (see example index.html file)
const decodedBuffer = decoder.getDecodedBuffer();
const frameInfo = decoder.getFrameInfo(); // width/height will be wrong if using decodeSubResolution
const interleaveMode = 2;

// In example index.html file
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

- [Setting up VS Code Dev Containers](https://code.visualstudio.com/docs/remote/containers-tutorial)
- [Additional Dev Containers configuration guidance](https://code.visualstudio.com/docs/remote/containers)

### Requirements

0. VS Code and Docker Desktop
1. [Remote-Containers extension](vscode:extension/ms-vscode-remote.remote-containers)
2. Command Pallete --> `Remote-Containers: Open Folder in Container`

### How to Run
- Run `pnpm install` in the main codecs folder
- Run `git submodule update --init --recursive` in the main codecs folder to initiate submodules
- Go to packages/openjpeg folder
- Run `pnpm run build`

## Testing

```bash
pnpm run build   # compile wasm into dist/
pnpm run test    # run vitest against dist/
```

Tests skip cleanly when `dist/` is absent.

---
_Source: https://npm.io/package/@cornerstonejs/codec-openjpeg · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
