LibTIFF Coverage of the TIFF 6.0 Specification

The library is capable of dealing with images that are written to follow the 5.0 or 6.0 TIFF spec. There is also considerable support for some of the more esoteric portions of the 6.0 TIFF spec.

Baseline

Core requirements

Core requirements

Both MM and II byte orders are handled. Both packed and separated planar configuration of samples. Any number of samples per pixel (memory permitting). Any image width and height (memory permitting). Multiple subfiles can be read and written. Editing is not supported in that related subfiles (e.g. a reduced resolution version of an image) are not automatically updated.

Tags handled: ExtraSamples, ImageWidth, ImageLength, NewSubfileType, ResolutionUnit. Rowsperstrip, StripOffsets, StripByteCounts, XResolution, YResolution

Tiled Images

TileWidth, TileLength, TileOffsets, TileByteCounts

Image Colorimetry Information

WhitePoint, PrimaryChromaticities, TransferFunction, ReferenceBlackWhite

Class B for bilevel images

SamplesPerPixel = 1

BitsPerSample = 1

Compression = 1 (none), 2 (CCITT 1D), or 32773 (PackBits)

PhotometricInterpretation = 0 (Min-is-White), 1 (Min-is-Black)

Class G for grayscale images

SamplesPerPixel = 1

BitsPerSample = 4, 8

Compression = 1 (none) 5 (LZW)

PhotometricInterpretation = 0 (Min-is-White), 1 (Min-is-Black)

Class P for palette color images

SamplesPerPixel = 1

BitsPerSample = 1-8

Compression = 1 (none) 5 (LZW)

PhotometricInterpretation = 3 (Palette RGB)

ColorMap

Class R for RGB full color images

SamplesPerPixel = 3

BitsPerSample = <8,8,8>

PlanarConfiguration = 1, 2

Compression = 1 (none) 5 (LZW)

PhotometricInterpretation = 2 (RGB)

Class F for facsimile

(Class B tags plus...)

Compression = 3 (CCITT Group 3), 4 (CCITT Group 4)

FillOrder = 1 (MSB), 2 (LSB)

Group3Options = 1 (2d encoding), 4 (zero fill), 5 (2d+fill)

ImageWidth = 1728, 2048, 2482

NewSubFileType = 2

ResolutionUnit = 2 (Inch), 3 (Centimeter)

PageNumber, XResolution, YResolution, Software, BadFaxLines, CleanFaxData, ConsecutiveBadFaxLines, DateTime, DocumentName, ImageDescription, Orientation

Class S for separated images

SamplesPerPixel = 4

PlanarConfiguration = 1, 2

Compression = 1 (none), 5 (LZW)

PhotometricInterpretation = 5 (Separated)

InkSet = 1 (CMYK)

DotRange, InkNames, DotRange, TargetPrinter

Class Y for YCbCr images

SamplesPerPixel = 3

BitsPerSample = <8,8,8>

PlanarConfiguration = 1, 2

Compression = 1 (none), 5 (LZW), 7 (JPEG)

PhotometricInterpretation = 6 (YCbCr)

YCbCrCoefficients, YCbCrSubsampling, YCbCrPositioning

(colorimetry info from Appendix H; see above)

Class "JPEG" for JPEG images (per TTN2)

PhotometricInterpretation = 1 (grayscale), 2 (RGB), 5 (CMYK), 6 (YCbCr)

(Class Y tags if YCbCr)

(Class S tags if CMYK)

Compression = 7 (JPEG)

In addition, the library supports some optional compression algorithms that are, in some cases, of dubious value.

Compression algorithms

Compression tag value

Compression algorithm

32766

NeXT 2-bit encoding

32809

ThunderScan 4-bit encoding

32909

Pixar companded 11-bit ZIP encoding

32946

PKZIP-style Deflate encoding (experimental)

34676

SGI 32-bit Log Luminance encoding (experimental)

34677

SGI 24-bit Log Luminance encoding (experimental)

Note that there is no support for the JPEG-related tags defined in the 6.0 specification; the JPEG support is based on the post-6.0 proposal given in TIFF Technical Note #2.

Note

For more information on the experimental Log Luminance encoding consult the materials available at http://www.anyhere.com/gward/pixformat/tiffluv.html.

The following table shows the tags that are recognized and how they are used by the library. If no use is indicated, then the library reads and writes the tag, but does not use it internally. For the meaning of the tags look in https://www.awaresystems.be/imaging/tiff/tifftags.html

libtiff supports also many private tags allocated for organizations that wish to store additional information in a TIFF file. Tags for TIFF/EP and for Digital Negative (DNG) Specification 1.1.0 are included.

Note that some tags are meaningful only when a particular compression scheme is being used; e.g. Group3Options is only useful if Compression is set to CCITT Group 3 encoding. Tags of this sort are considered codec-specific tags and the library does not recognize them except when the Compression tag has been previously set to the relevant compression scheme.

Tags Recognized by LibTIFF

Tags used by libtiff

Tag Name

Value

R/W<

Library's Use (Comments)

SubfileType

254

R/W

none (also known as NewSubfileType)

OldSubfileType

255

R/W

parsed but ignored (also known as SubFileType)

ImageWidth

256

R/W

lots

ImageLength

257

R/W

lots

BitsPerSample

258

R/W

lots

Compression

259

R/W

to select appropriate codec

PhotometricInterpretation

262

R/W

lots

Thresholding

263

R/W

(tag in tif.h wrongly written as "Threshholding")

CellWidth

264

R/W

CellLength

265

R/W

FillOrder

266

R/W

control bit order

DocumentName

269

R/W

ImageDescription

270

R/W

Make

271

R/W

Model

272

R/W

StripOffsets

273

R/W

data i/o

Orientation

274

R/W

SamplesPerPixel

277

R/W

lots

RowsPerStrip

278

R/W

data i/o

StripByteCounts

279

R/W

data i/o

MinSampleValue

280

R/W

MaxSampleValue

281

R/W

XResolution

282

R/W

YResolution

283

R/W

used by Group 3 2d encoder

PlanarConfiguration

284

R/W

data i/o

PageName

285

R/W

XPosition

286

R/W

YPosition

287

R/W

FreeOffsets

288

R/W

parsed but ignored

FreeByteCounts

289

R/W

parsed but ignored

GrayResponseUnit

290

R/W

parsed but ignored

GrayResponseCurve

291

R/W

parsed but ignored

ResolutionUnit

296

R/W

used by Group 3 2d encoder

PageNumber

297

R/W

ColorResponseUnit

300

R/W

parsed but ignored

TransferFunction

301

R/W

Software

305

R/W

DateTime

306

R/W

Artist

315

R/W

HostComputer

316

R/W

WhitePoint

318

R/W

PrimaryChromaticities

319

R/W

ColorMap

320

R/W

HalftoneHints

321

R/W

TileWidth

322

R/W

data i/o

TileLength

323

R/W

data i/o

TileOffsets

324

R/W

data i/o

TileByteCounts

325

R/W

data i/o

SubIFD

330

R/W

subimage descriptor support

InkSet

332

R/W

InkNames

333

R/W

NumberOfInks

334

R/W

DotRange

336

R/W

TargetPrinter

337

R/W

ExtraSamples

338

R/W

lots

SampleFormat

339

R/W

SMinSampleValue

340

R/W

SMaxSampleValue

341

R/W

ClipPath

343

R/W

XClipPathUnits

344

R/W

YClipPathUnits

345

R/W

YCbCrCoefficients

529

R/W

used by TIFFReadRGBAImage support

YCbCrSubsampling

530

R/W

tile / strip size calculations

YCbCrPositioning

531

R/W

ReferenceBlackWhite

532

R/W

XMLPacket

700

R/W

Matteing

32995

R

none (obsoleted by ExtraSamples tag)

DataType

32996

R

none (obsoleted by SampleFormat tag)

ImageDepth

32997

R/W

tile / strip size calculations

TileDepth

32998

R/W

tile / strip size calculations

ImageFullWidth

33300

R/W

ImageFullLength

33301

R/W

TextureFormat

33302

R/W

TextureWrapModes

33303

R/W

FieldOfViewCotangent

33304

R/W

MatrixWorldToScreen

33305

R/W

MatrixWorldToCamera

33306

R/W

Copyright

33432

R/W

RichTIFFIPTC

33723

R/W

(also known as TIFF/EP IPTC/NAA; libtiff type is UNDEFINED or BYTE, but often times incorrectly specified as LONG, because TIFF/EP (ISO/DIS 12234-2) specifies type LONG or ASCII)

Photoshop

34377

R/W

EXIFIFDOffset

34665

R/W

ICC Profile

34675

R/W

GPSIFDOffset

34853

R/W

FaxRecvParams

34908

R/W

FaxSubAddress

34909

R/W

FaxRecvTime

34910

R/W

FaxDcs

34911

R/W

StoNits

37439

R/W

Adobe Photoshop Document Data Block

37724

R/W

InteroperabilityIFDOffset

40965

R/W

DNGVersion

50706

R/W

DNG 1.0 tags

DNGBackwardVersion

50707

R/W

UniqueCameraModel

50708

R/W

LocalizedCameraModel

50709

R/W

CFAPlaneColor

50710

R/W

CFALayout

50711

R/W

LinearizationTable

50712

R/W

BlackLevelRepeatDim

50713

R/W

BlackLevel

50714

R/W

BlackLevelDeltaH

50715

R/W

BlackLevelDeltaV

50716

R/W

WhiteLevel

50717

R/W

DefaultScale

50718

R/W

DefaultCropOrigin

50719

R/W

DefaultCropSize

50720

R/W

ColorMatrix1

50721

R/W

ColorMatrix2

50722

R/W

CameraCalibration1

50723

R/W

CameraCalibration2

50724

R/W

ReductionMatrix1

50725

R/W

ReductionMatrix2

50726

R/W

AnalogBalance

50727

R/W

AsShotNeutral

50728

R/W

AsShotWhiteXY

50729

R/W

BaselineExposure

50730

R/W

BaselineNoise

50731

R/W

BaselineSharpness

50732

R/W

BayerGreenSplit

50733

R/W

LinearResponseLimit

50734

R/W

CameraSerialNumber

50735

R/W

LensInfo

50736

R/W

ChromaBlurRadius

50737

R/W

AntiAliasStrength

50738

R/W

ShadowScale

50739

R/W

DNGPrivateData

50740

R/W

MakerNoteSafety

50741

R/W

CalibrationIlluminant1

50778

R/W

CalibrationIlluminant2

50779

R/W

BestQualityScale

50780

R/W

RawDataUniqueID

50781

R/W

OriginalRawFileName

50827

R/W

OriginalRawFileData

50828

R/W

ActiveArea

50829

R/W

MaskedAreas

50830

R/W

AsShotICCProfile

50831

R/W

AsShotPreProfileMatrix

50832

R/W

CurrentICCProfile

50833

R/W

CurrentPreProfileMatrix

50834

R/W

PerSample

65563

R/W

(only internal pseudo tag)

Indexed

346

R/W

TIFF/FX tags

GlobalParametersIFD

400

R/W

ProfileType

401

R/W

FaxProfile

402

R/W

CodingMethods

403

R/W

VersionYear

404

R/W

ModeNumber

405

R/W

Decode

433

R/W

ImageBaseColor

434

R/W

T82Options

435

R/W

StripRowCounts

559

R/W

part of RFC 2301 for fax

ImageLayer

34732

R/W

The Matteing and DataType tags have been obsoleted by the 6.0 ExtraSamples and SampleFormat tags. Consult the documentation on the ExtraSamples tag and Associated Alpha for elaboration. Note however that if you use Associated Alpha, you are expected to save data that is pre-multipled by Alpha. If this means nothing to you, check out Porter & Duff's paper in the '84 SIGGRAPH proceedings: "Compositing Digital Images".

Tag RichTIFFIPTC (33723) is defined wrongly in TIFF/EP definition as "LONG or ASCII". libtiff defines it as "UNDEFINED or BYTE".

The ImageDepth tag is a non-standard, but registered tag that specifies the Z-dimension of volumetric data. The combination of ImageWidth, ImageLength, and ImageDepth, defines a 3D volume of pixels that are further specified by BitsPerSample and SamplesPerPixel. The TileDepth tag (also non-standard, but registered) can be used to specified a subvolume "tiling" of a volume of data.

The Colorimetry, and CMYK tags are additions that appear in TIFF 6.0. Consult the TIFF 6.0 specification and TIFF File Format Specification.

Codecs / Compression

The following tags are used by codecs.

Codec / Compression Tags used by libtiff

Tag Name

Value

R/W<

Library's Use (Comments)

Predictor

317

R/W

LZW codec

JPEGTables

347

R/W

JPEG

JpegInterchangeFormat

513

R/W

OJPEG

JpegInterchangeFormatLength

514

R/W

OJPEG

JpegQTables

519

R/W

OJPEG

JpegDcTables

520

R/W

OJPEG

JpegAcTables

521

R/W

OJPEG

JpegProc

512

R/W

OJPEG

JpegRestartInterval

515

R/W

OJPEG

BadFaxLines

326

R/W

CCITT / fax

CleanFaxData

327

R/W

CCITT / fax

ConsecutiveBadFaxLines

328

R/W

CCITT / fax

Group3Options

292

R/W

CCITT / fax

Group4Options

293

R/W

CCITT / fax

LercParameters

50674

R/W

LERC

Note: This codec-specific tags and the library does not recognize them except when the Compression tag has been previously set to the relevant compression scheme.

The JPEG-related tag is specified in DRAFT TIFF Technical Note #2, which defines a revised JPEG-in-TIFF scheme (revised over the appendix that was part of the TIFF 6.0 specification).

EXIF / GPS Custom IFDs

In addition to the standard TIFF tags, libtiff has predefined IFDs (image file directories) with the tags for EXIF (version 2.32) and EXIF-GPS as custom directories. For reading / writing of this IFDs refer to TIFFCustomDirectory.

EXIF Custom Tags

EXIF 2.32 Tags used by libtiff

Tag Name

Value

R/W<

Library's Use (Comments)

ExposureTime

33434

R/W

FNumber

33437

R/W

ExposureProgram

34850

R/W

SpectralSensitivity

34852

R/W

ISOSpeedRatings

34855

R/W

After EXIF 2.2.1 ISOSpeedRatings is named PhotographicSensitivity. In addition, while "Count=Any", only 1 count should be used.

OptoelectricConversionFactor

34856

R/W

SensitivityType

34864

R/W

StandardOutputSensitivity

34865

R/W

RecommendedExposureIndex

34866

R/W

ISOSpeed

34867

R/W

ISOSpeedLatitudeyyy

34868

R/W

ISOSpeedLatitudezzz

34869

R/W

ExifVersion

36864

R/W

DateTimeOriginal

36867

R/W

DateTimeDigitized

36868

R/W

OffsetTime

36880

R/W

OffsetTimeOriginal

36881

R/W

OffsetTimeDigitized

36882

R/W

ComponentsConfiguration

37121

R/W

CompressedBitsPerPixel

37122

R/W

ShutterSpeedValue

37377

R/W

ApertureValue

37378

R/W

BrightnessValue

37379

R/W

ExposureBiasValue

37380

R/W

MaxApertureValue

37381

R/W

SubjectDistance

37382

R/W

MeteringMode

37383

R/W

LightSource

37384

R/W

Flash

37385

R/W

FocalLength

37386

R/W

SubjectArea

37396

R/W

MakerNote

37500

R/W

UserComment

37510

R/W

SubSecTime

37520

R/W

SubSecTimeOriginal

37521

R/W

SubSecTimeDigitized

37522

R/W

Temperature

37888

R/W

Humidity

37889

R/W

Pressure

37890

R/W

WaterDepth

37891

R/W

Acceleration

37892

R/W

CameraElevationAngle

37893

R/W

FlashpixVersion

40960

R/W

ColorSpace

40961

R/W

PixelXDimension

40962

R/W

PixelYDimension

40963

R/W

RelatedSoundFile

40964

R/W

FlashEnergy

41483

R/W

SpatialFrequencyResponse

41484

R/W

FocalPlaneXResolution

41486

R/W

FocalPlaneYResolution

41487

R/W

FocalPlaneResolutionUnit

41488

R/W

SubjectLocation

41492

R/W

ExposureIndex

41493

R/W

SensingMethod

41495

R/W

FileSource

41728

R/W

SceneType

41729

R/W

CFAPattern

41730

R/W

CustomRendered

41985

R/W

ExposureMode

41986

R/W

WhiteBalance

41987

R/W

DigitalZoomRatio

41988

R/W

FocalLengthIn35mmFilm

41989

R/W

SceneCaptureType

41990

R/W

GainControl

41991

R/W

Contrast

41992

R/W

Saturation

41993

R/W

Sharpness

41994

R/W

DeviceSettingDescription

41995

R/W

SubjectDistanceRange

41996

R/W

ImageUniqueID

42016

R/W

CameraOwnerName

42032

R/W

BodySerialNumber

42033

R/W

LensSpecification

42034

R/W

LensMake

42035

R/W

LensModel

42036

R/W

LensSerialNumber

42037

R/W

Gamma

42240

R/W

CompositeImage

42080

R/W

SourceImageNumberOfCompositeImage

42081

R/W

SourceExposureTimesOfCompositeImage

42082

R/W

GPS Custom Tags

GPS 2.32 Tags used by libtiff

Tag Name

Value

R/W<

Library's Use (Comments)

VersionID

0

R/W

LatitudeRef

1

R/W

Latitude

2

R/W

LongitudeRef

3

R/W

Longitude

4

R/W

AltitudeRef

5

R/W

Altitude

6

R/W

TimeStamp

7

R/W

Satellites

8

R/W

Status

9

R/W

MeasureMode

10

R/W

DOP

11

R/W

SpeedRef

12

R/W

Speed

13

R/W

TrackRef

14

R/W

Track

15

R/W

ImgDirectionRef

16

R/W

ImgDirection

17

R/W

MapDatum

18

R/W

DestLatitudeRef

19

R/W

DestLatitude

20

R/W

DestLongitudeRef

21

R/W

DestLongitude

22

R/W

DestBearingRef

23

R/W

DestBearing

24

R/W

DestDistanceRef

25

R/W

DestDistance

26

R/W

ProcessingMethod

27

R/W

AreaInformation

28

R/W

DateStamp

29

R/W

Differential

30

R/W

HorizontalPositioningError

31

R/W