"checkit_tiff" is an incredibly fast conformance checker for baseline TIFFs (with various extensions), see http://andreas-romeyke.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.4 KiB

About general function

The checkit-tool validates a TIFF-file against a set of rules (see below). The
set of rules works as a whitelist. This means that if a tag in the TIFF file is
not explicitely checked by rules (independently if successfully or not) the tag
is not allowed. In cases where a rule is executed only if a predicate is set,
the tag is only allowed if the predicate succeeded.

to configure the grammar you could use the PEG-extension for gvim from https://github.com/gf3/peg.vim

to define your own config-file to check TIFFs, please use this simplified

* each line is either a modeline, a include line, a tagline, a comment or empty
* a modeline uses "mode(MODE)", MODE could be:
** "baseline", if no modeline is defined, it defaults to "mode(baseline)", too
** "extended"
* to include a configfile, use this command: "include(FILENAME)" where FILENAME is a correct path
* a comment starts with # first
* a tagline is built via "TAG ; REQUIREMENTS ; VALUES", where
* a TAG is a increasing number similar to TIFF-Tag numbers (see TIFF definition)
** 'mandatory' - a tag must exist in TIFF
** 'optional' - a tag could exist in TIFF, if so it will be checked
** 'depends(REFERENCE)' - a tag must exist in TIFF if reference exists
** 'optdepends(REFERENCE)' - a tag could exists in TIFF if reference exists. If it exists it will be checked
** TAGREFERENCE points to a tag number which must be exists,
** VALUEREFERENCE could be 'any' or a decimal value or a string enclosed in '"'
** only if REFERENCE exists in TIFF the REQUIREMENTS rule will be checked
* VALUES could be one of these:
** 'range(START, END)' where START and END are decimal values
** 'logical_or( VALUELIST)' where VALUELIST are comma-separated decimale values
** 'any' which means any match
** 'only(VALUE)' where VALUE is a decimal value or a string enclosed in ""
** 'regex("REGEX")' where REGEX is a PCRE-regular expression with escaped '"' and '\', it only works with tags of type ascii
* each tagline or comment must be closed with a new line

If multiple rules defined per tag, they will be combined alternatively.

For examples check the 'example_configs/' - directory.


At the moment, the parser only supports a limited type of values. To make
handling easier, it uses only the value/offset part of an IFD entry