Exif Vivisector 1.0


File Open: Open file, any file extension except .tif is assumed to be a jpeg.

Save: Filename is set to original name + _modified, e.g. My_Photo.jpg is saved as My_Photo_modified.jpg

Save As: Exactly.

Add Field: Add an EXIF field. See below for a more detailed explanation.

Delete Field: Please note that ALL fields with the same identity will be deleted. (However, there shouldn't be any duplicates in the first place.)

Different Parts of an Image

A jpeg image consists of a number of blocks with different information. Meta data are put into special blocks. The EXIF standard uses the app1 block as its container. IPTC uses app13.

EXIF is a standard issued by JEITA. Most digital cameras support the EXIF standard. IPTC is commonly used to add information to photos, e.g. keywords or dexcription.


There are several variants of IPTC, Exif Vivisector can read (but not add or update) the most common format. A newer XML-based version has been published, but Exif ViviSector does not support the newer standard.


EXIF is an extension to TIFF 6.0, some standard TIFF 6.0 fields are mandatory or optional in EXIF, and a quite a few additional fields have been added. EXIF is split into segements, BASE (or TIFF), EXIF, GPS, INTEROPERABILITY and THUMBNAIL. Base contains TIFF 6.0 fields, THUMBNAIL contains (surprise!) an actual thumbnail and associated information. All other segments are EXIF specific extensions. Exif Vivisector will suggest the correct segment to put a new field according to the specificationen. It is possible to change that if so desired.

Each field consists of a label, type, count and data. Data is either stored directly in the field or, if more than 4 bytes worth of data, in a separate area. In the latter case, the 4 bytes reserved for data in the field is used as a pointer to the data area.

There are several different datatypes with different datum sizes: ASCII, UNKNOWN, BYTE, SBYTE are each 1 byte per datum, SHORT, SHORT 2 byte, LONG, SLONG, REAL 4 byte, DOUBLE, RATIONAL, SRATIONAL 8 byte.

ASCII is always 0-terminated (a la C), consequently, ASCII-string are one byte longer than the number of characters.

Data Entry

ASCII text is just typed. The result of entering characters outside the ASCII range is undefined.

UNKNOWN and BYTE values are enter as two digit hexadecimals. E.g. 12aa results in 12h being put in byte 0 and aah in byte 1 (18 and 170 in decimal).

The integer data formats are entered on per line in decimal. They can also be entered using hexadecimal notation by prepending the number with 0x.

Rational numbers are entered as m/n, m being numeral and n divisor. M and n ar integers as defined above. One complete rational number per line. E.g. 123/456

Floating point numbers are not used in EXIF and cannot be entered using Exif Vivisector.

BEWARE!!! All data lengths above 4 bytes MUST be even! Exif Vivisector will NOT enforce this. In real life this means that ASCII-strings longer than 3 characters should have an ODD length (adding a trailing zero makes it even) ; UNKNOWN and BYTE fields longer than 4 bytes should have an EVEN length.

About PM Archiver

Our main product is PM Archiver. PM Archiver is a digital photo archive based on Microsoft SQL Server 2000.

PM Archiver is designed to be used in settings with many users, where having a common, centrally located, database makes sense.