or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

compression.mdimage-operations.mdindex.mdmetadata.md
tile.json

tessl/maven-com-twelvemonkeys-imageio--imageio-tiff

ImageIO plugin for Aldus/Adobe Tagged Image File Format (TIFF)

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.twelvemonkeys.imageio/imageio-tiff@3.12.x

To install, run

npx @tessl/cli install tessl/maven-com-twelvemonkeys-imageio--imageio-tiff@3.12.0

index.mddocs/

TwelveMonkeys ImageIO TIFF Plugin

A comprehensive Java ImageIO plugin that provides robust TIFF and BigTIFF format support for reading and writing Tagged Image File Format files. This plugin extends Java's ImageIO framework with advanced TIFF capabilities including multi-page documents, extensive compression options, and comprehensive metadata handling.

Package Information

  • Package Name: imageio-tiff
  • Package Type: maven
  • Group ID: com.twelvemonkeys.imageio
  • Artifact ID: imageio-tiff
  • Language: Java
  • Installation: Add to pom.xml dependencies:
<dependency>
    <groupId>com.twelvemonkeys.imageio</groupId>
    <artifactId>imageio-tiff</artifactId>
    <version>3.12.0</version>
</dependency>

Core Imports

The plugin automatically registers with Java's ImageIO service provider interface, so no explicit imports are required for basic usage:

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

For advanced usage with plugin-specific features:

import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageReader;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriter;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriteParam;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageMetadata;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadata;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageReaderSpi;
import com.twelvemonkeys.imageio.plugins.tiff.TIFFImageWriterSpi;
import com.twelvemonkeys.imageio.plugins.tiff.BigTIFFImageReaderSpi;
import com.twelvemonkeys.imageio.plugins.tiff.BigTIFFImageWriterSpi;

Basic Usage

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

// Reading a TIFF file (automatic plugin selection)
BufferedImage image = ImageIO.read(new File("example.tiff"));

// Writing a TIFF file (automatic plugin selection)
BufferedImage image = // ... create or load image
ImageIO.write(image, "TIFF", new File("output.tiff"));

// Reading multi-page TIFF
ImageReader reader = ImageIO.getImageReadersByFormatName("TIFF").next();
reader.setInput(ImageIO.createImageInputStream(new File("multipage.tiff")));
int numImages = reader.getNumImages(true);
for (int i = 0; i < numImages; i++) {
    BufferedImage page = reader.read(i);
    // Process each page
}
reader.dispose();

Architecture

The plugin is built around several key components that integrate seamlessly with Java's ImageIO framework:

  • Service Providers: Automatic registration via TIFFImageReaderSpi, TIFFImageWriterSpi, BigTIFFImageReaderSpi, and BigTIFFImageWriterSpi
  • Core Readers/Writers: TIFFImageReader and TIFFImageWriter handle all TIFF operations with comprehensive format support
  • Write Parameters: TIFFImageWriteParam provides extensive compression and quality configuration options
  • Metadata System: TIFFImageMetadata and TIFFStreamMetadata provide complete TIFF tag and metadata access
  • Format Support: Handles baseline TIFF, BigTIFF (>4GB files), and extensive compression algorithms

Capabilities

Image Reading and Writing

Core TIFF/BigTIFF image reading and writing functionality with comprehensive format support, compression options, and multi-page document handling.

// Primary reader/writer classes
class TIFFImageReader extends ImageReader;
class TIFFImageWriter extends ImageWriter;

// Service provider interfaces (auto-registered)
class TIFFImageReaderSpi extends ImageReaderSpi;
class TIFFImageWriterSpi extends ImageWriterSpi;
class BigTIFFImageReaderSpi extends ImageReaderSpi;
class BigTIFFImageWriterSpi extends ImageWriterSpi;

Image Operations

Compression Configuration

Advanced compression settings and write parameters for optimizing TIFF output with support for 9 different compression algorithms including lossless and lossy options.

class TIFFImageWriteParam extends ImageWriteParam {
    // Available compression types (string constants for setCompressionType()):
    // "None", "CCITT RLE", "CCITT T.4", "CCITT T.6", 
    // "LZW", "JPEG", "ZLib", "PackBits", "Deflate"
    
    public TIFFImageWriteParam();
    public float[] getCompressionQualityValues();
    public String[] getCompressionQualityDescriptions();
}

Compression

Metadata Management

Complete TIFF metadata handling including image-level and stream-level metadata with support for standard TIFF tags, EXIF, IPTC, and XMP metadata.

class TIFFImageMetadata extends IIOMetadata {
    public static final int RATIONAL_SCALE_FACTOR = 100000;
    
    public TIFFImageMetadata();
    public TIFFImageMetadata(Directory ifd);
    public TIFFImageMetadata(Collection<? extends Entry> entries);
    public Entry getTIFFField(int tagNumber);
    public void reset();
}

class TIFFStreamMetadata extends IIOMetadata {
    public static final String SUN_NATIVE_STREAM_METADATA_FORMAT_NAME = "com_sun_media_imageio_plugins_tiff_stream_1.0";
    
    public TIFFStreamMetadata();
    public void reset();
    public static void configureStreamByteOrder(IIOMetadata streamMetadata, ImageOutputStream imageOutput);
}

Metadata

Types

// Core service provider interfaces
abstract class ImageReaderSpi {
    public abstract boolean canDecodeInput(Object source);
    public abstract ImageReader createReaderInstance(Object extension);
    public abstract String getDescription(Locale locale);
}

abstract class ImageWriterSpi {
    public abstract boolean canEncodeImage(ImageTypeSpecifier type);
    public abstract ImageWriter createWriterInstance(Object extension);
    public abstract String getDescription(Locale locale);
}

// ImageIO base classes
abstract class ImageReader {
    public abstract int getNumImages(boolean allowSearch);
    public abstract int getWidth(int imageIndex);
    public abstract int getHeight(int imageIndex);
    public abstract BufferedImage read(int imageIndex, ImageReadParam param);
    public abstract IIOMetadata getImageMetadata(int imageIndex);
}

abstract class ImageWriter {
    public abstract void write(IIOMetadata streamMetadata, IIOImage image, ImageWriteParam param);
    public abstract IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param);
    public abstract ImageWriteParam getDefaultWriteParam();
}

abstract class ImageWriteParam {
    public void setCompressionMode(int mode);
    public void setCompressionType(String compressionType);
    public void setCompressionQuality(float quality);
}

abstract class IIOMetadata {
    public abstract boolean isReadOnly();
    public abstract Node getAsTree(String formatName);
    public abstract void setFromTree(String formatName, Node root);
}