Package Exports
- decode-tiff
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (decode-tiff) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
decode-tiff
⚡ A lightweight pure JavaScript TIFF decoder. 🎨
How to use it
With Node.js
npm i tiff-decodeThe 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.