ITK-Wasm in a Deno applicationΒΆ

An itk-convert command line interface (CLI) example demonstrates how to use ITK-Wasm in a Deno application. Find the full example in the ITK-Wasm/examples/deno directory of the GitHub repository.

This example assumes you are creating a Deno project. If you do not already have a deno.json file, create one first.

Add packages to your project’s imports:

{
  "imports": {
    "@itk-wasm/image-io": "npm:@itk-wasm/image-io",
    "@itk-wasm/mesh-io": "npm:@itk-wasm/mesh-io",
    "itk-wasm": "npm:itk-wasm"
  }
}

This adds itk-wasm and ITK-Wasm IO packages to the imports section of your deno.json file:

{
  "name": "itk-convert",
  "version": "1.0.0",
  "description": "Convert image or mesh files from one format to another.",
  "exports": "./src/itk-convert.ts",
  "tasks": {
    "test": "deno run --allow-read --allow-write src/itk-convert.ts ../../docs/_static/logo.png ./logo.tif"
  },
  "imports": {
    "@itk-wasm/image-io": "npm:@itk-wasm/image-io",
    "@itk-wasm/mesh-io": "npm:@itk-wasm/mesh-io",
    "itk-wasm": "npm:itk-wasm@1.0.0-b.188"
  },
  "compilerOptions": {
    "strict": true
  }
}

Next, call functions like readImageNode or writeImageNode.

For example,

import { readImageNode, writeImageNode } from '@itk-wasm/image-io'
import { readMeshNode, writeMeshNode, extensionToMeshIo } from '@itk-wasm/mesh-io'
import { getFileExtension } from 'itk-wasm'

const extension = getFileExtension(inputFile).toLowerCase()
const isMesh = extensionToMeshIo.has(extension)

try {
  if (isMesh) {
    const mesh = await readMeshNode(inputFile)
    await writeMeshNode(mesh, outputFile)
  } else {
    const image = await readImageNode(inputFile)
    await writeImageNode(image, outputFile)
  }
} catch (error) {
  console.error('Error during conversion:\n')
  console.error(error)
}