GIF-hul Module
1 Introduction
The GIF-hul module recognizes and validates the GIF (Tagged Interchange Format) format [GIF89a].
The module is invoked by the:
command line option.jhove ... -m gif-hul ...
2 Coverage
The GIF-hul module recognizes and validates the following public profiles:
3 Well-Formedness
The following criteria must be met by a GIF object for JHOVE to consider it well-formed:
- Properly formed signature ("GIF" at byte offset 0) and version identifier ("87a" or "89a" at byte offset 3)
- A sequence of properly formed (as defined by the relevant specifications) control, graphic-rendering, and special purpose blocks
- GIF terminator (0x00) at end of the content stream
4 Validity
The following criteria must be met by a GIF file for JHOVE to consider it valid:
- The file is well-formed
- At most one global color map
- At most one graphic control extension preceding an image descriptor or a plain text extension
5 Representation Information
The MIME type is reported as: image/gif
In addition to the standard JHOVE representation information, the following GIF-specific properties are reported:
- Property "GIFMetadata" of type PROPERTY and arity ARRAY
- Property "GraphicRenderingBlocks" of type INTEGER and arity SCALAR
indicating the total number of Image Descriptor and Plain Text Extension blocks - Property "Blocks" of type PROPERTY and arity LIST
The block types are "LogicalScreenDescriptor", "GlobalColorTable", "GraphicControlExtension", "ImageDescriptor", "PlainTextExtension", "ApplicationExtension", "CommentExtension"- Property "LogicalScreenDescriptor" of type PROPERTY and arity ARRAY
- Property "LogicalScreenWidth" of type INTEGER and arity SCALAR
- Property "LogicalScreenHeight" of type INTEGER and arity SCALAR
- Property "ColorResolution" of type SHORT and arity SCALAR
- Property "BackgroundColorIndex" of type SHORT and arity SCALAR
- Property "PixelAspectRatio" of type SHORT and arity SCALAR
- Property "GlobalColorTableFlag" of type BYTE and arity SCALAR
=0 "No global color table; background color index meaningless";
=1 "Global color table follows; background color index meaningful" - Property "GlobalColorTableSortFlag" of type BYTE and arity SCALAR
=0 "Not ordered"; =1 "Ordered by decreasing importance" - Property "GlobalColorTableSize" of type SHORT and arity SCALAR
- (Optional) property "GlobalColorTable" of type SHORT and arity ARRAY
- (Optional) property "GraphicControlExtension" of type PROPERTY and arity
ARRAY
- Property "DisposalMethod" of type BYTE and arity SCALAR
=0 "No disposal specified"; =1 "Do not dispose"; =2 "Restor to background color; =3 "Restore to previous" - Property "UserInputFlag" of type BYTE and arity SCALAR
=0 "User input not expected"; =1 "User input expected" - Property "TransparencyFlag" of type BYTE and arity SCALAR
=0 "Transparent index is not given"; =1 "Transparent index given" - Property "DelayTime" of type INTEGER and arity SCALAR
- Property "TransparentColorIndex" of type SHORT and arity SCALAR
- Property "DisposalMethod" of type BYTE and arity SCALAR
- (Optional) property "ImageDescriptor" of type PROPERTY and arity ARRAY
- Property "ImageLeftPosition" of type INTEGER and arity SCALAR
- Property "ImageRightPosition" of type INTEGER and arity SCALAR
- Property "InterlaceFlag" of type BYTE and arity SCALAR
=0 "Image is not interlaced"; =1 "Image is interlaced" - Property "LocalColorTableFlag" of type BYTE and arity SCALAR
=0 "No local color table; use global table if available";
=1 "Local color table follows" - Property "LocalColorTableSortFlag" of type BYTE and arity SCALAR
=0 "Not ordered"; =1 "Order by decreasing importance" - Property "LocalColorTableSize" of type SHORT and arity SCALAR
- Property "NisoImageMetadata" of type NISOIMAGEMETADATA and arity
SCALAR
MIMEType = "image/gif";
ByteOrder = "little_endian";
CompressionScheme = 5 "LZW";
ColorSpace = 3 "Palette color";
Orientation = 1 "Normal";
ImageWidth = ImageWidth; ImageLength = ImageHeight;
SamplesPerPixel = 1;
ColorMap = local color table (if supplied)
- (Optional) property "PlainTextExtension" of type PROPERTY and arity ARRAY
- Property "TextGridLeftPosition" of type INTEGER and type SCALAR
- Property "TextGridTopPosition" of type INTEGER and type SCALAR
- Property "TextGridWidth" of type INTEGER and type SCALAR
- Property "TextGridHeight" of type INTEGER and type SCALAR
- Property "CharacterCellWidth" of type SHORT and type SCALAR
- Property "CharacterCellHeight" of type SHORT and type SCALAR
- Property "TextForegroundColorIndex" of type SHORT and type SCALAR
- Property "TextBackgroundColorIndex" of type SHORT and type SCALAR
- Property "PlainTextData" of type STRING and type SCALAR
- (Optional) property "ApplicationExtension" of type PROPERTY and arity
ARRAY
- Property "ApplicationIdentifier" of type STRING and arity SCALAR
- Property "ApplicationAuthenticationCode" of type SHORT and type ARRAY
- Property "ApplicationDataSize" of type INTEGER and type SCALAR
use the block size to determine the length of the application data
- (Optional) property "CommentExtension" of type STRING and arity SCALAR
- Property "LogicalScreenDescriptor" of type PROPERTY and arity ARRAY
- Property "GraphicRenderingBlocks" of type INTEGER and arity SCALAR
Image technical properties are reported in terms of the NISO Z39.87 data dictionary.
5.1 Profiles
- GIF 87a
The presence of the version identifier "87a" indicates version 87a.
- GIF 89a
The presence of the version identifier "89a" indicates version 89a.
6 Additional Module Properties
- Nominal file extension: .gif
Note "GIF" and "Graphics Interchange Format" are trademarks of CompuServe Interactive Services, Inc.