decode-tiff

0.2.1 • Public • Published

decode-tiff

npm version License: MIT

⚡️ A lightweight pure JavaScript TIFF decoder. 🎨

How to use it

With Node.js

npm i tiff-decode

The following example reads .tiff and converts to .png file using pngjs.

const { decode } = require("decode-tiff");
 
const { PNG } = require("pngjs");
const fs = require("fs");
 
const { width, height, data } = decode(fs.readFileSync(__dirname + "/lena_color.tiff"));
 
const png =  new PNG({ width, height });
png.data = data;
fs.writeFileSync(__dirname + "/lena.png", PNG.sync.write(png));

With Browser

Download script file from dist/decode-tiff.min.js. Alternatively you can use Module Bundler, such as webpack, Browserify, and Rollup.

This example shows metadata of the dropped file. Working demonstration is here.

<html>
<head></head>
<body>
 
  <div id="drop">
    <p>Drop TIFF file here!</p>
  </div>
 
<script src="decode-tiff.min.js"></script>
<script>
const { decode } = window.decodeTiff;
const elm = document.getElementById("drop");
elm.addEventListener("dragenter", e => e.preventDefault());
elm.addEventListener("dragover", e => e.preventDefault());
elm.addEventListener("drop", e => {
  e.preventDefault();
  const file = e.dataTransfer.files[0];
  const reader = new FileReader();
  reader.addEventListener("load", e => {
    const arrayBuffer = e.target.result;
    const { width, height, ifdEntries } = decode(arrayBuffer);
    const metadata = JSON.stringify({ width, height, ifdEntries }, null, 2);
    elm.innerHTML = `<pre>${metadata}</pre>`;
  });
  reader.readAsArrayBuffer(file);
});
</script> 
</body>
</html>

API

decode(buffer: ArrayBuffer | Buffer, options?: { singlePage?: boolean }): TiffImage | TiffImage[]

  • params
    • buffer - Required - Buffer of the target TIFF image. Node.js Buffer and ECMA Script's ArrayBuffer are acceptable.
    • options.singlePage - Optional (default: true) - If true, this function returns a single TiffImage object. If the input has 2 or more pages, return value will be the first page.
  • returns
    • TiffImage - An object.
    • TiffImage.width - number - Width of the input image.
    • TiffImage.height - number - Height of the input image.
    • TiffImage.data - Uint8Array - Image pixel data. Every pixel consists 4 bytes: R, G, B, A (opacity)
    • TiffImage.ifdEntries - {[key: string]: Array} - Each IFD entries of the input image.

Compatibility

  • Byte Order
    • Little endian
    • Big endian
  • Color resolusion
    • 32bit Full Colors
    • 24bit Full Colors
    • 8bit Gray scale
    • 4bit Gray scale
    • Palette-Color
    • Bilevel(white)
    • Bilevel(black)
  • Compression
    • No Compression
    • CCITT Group 3
    • LZW Compression
    • ZIP
    • Packbits
  • Masking
    • Transparency Mask

License

MIT. See LICENSE.txt.

Readme

Keywords

Package Sidebar

Install

npm i decode-tiff

Weekly Downloads

105,970

Version

0.2.1

License

MIT

Last publish

Collaborators

  • quramy