Exif data in the Media Store
“Exchangeable Image File Format” (Exif) is a standard for storing meta data in digital image files. Exif data can be also used in FirstSpirit: Depending on the configuration set by the template developer, this data can be displayed on the “Metadata” tab of a picture and if applicable can also be changed, e.g. camera manufacturer and model, date and time taken, focal length, exposure time.
To this end, a metadata template can be created or extended (see page Variables in metadata). To do this, input components suitable for acquisition of the Exif data are defined on the Form tab, e.g.
Information | Input component |
---|---|
Text | |
Numbers | |
Date / time | |
Option selection | |
For these input components, the identifier used (name parameter) must be the corresponding tags as hexadecimal value, which are defined by the Exif standard (see http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf) or information of the camera manufacturer. Each hexadecimal value must also be assigned the prefix FS_ for processing by FirstSpirit, e.g.
Picture taking parameters | Identifier (Parameter name) |
---|---|
Camera manufacturer | FS_0x010F |
Camera model | FS_0x0110 |
Orientation | FS_0x0112 |
Horizontal resolution | FS_0x011A |
Vertical resolution | FS_0x011B |
Resolution unit | FS_0x0128 |
Shutter speed | FS_0x829A |
Film sensitivity to ISO | FS_0x8827 |
Date and time taken | FS_0x9003 |
Aperture setting | FS_0x9202 |
Focal length of lens | FS_0x920A |
Example code for the metadata form
<CMS_INPUT_TEXT name="FS_0x010F" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Camera manufacturer (FS_0x010F)"/>
<LANGINFO lang="DE" label="Kamerahersteller (FS_0x010F)"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<CMS_INPUT_TEXT name="FS_0x0110" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Camera model (FS_0x0110)"/>
<LANGINFO lang="DE" label="Kameramodell (FS_0x0110)"/>
</LANGINFOS>
</CMS_INPUT_TEXT>
<CMS_INPUT_COMBOBOX name="FS_0x0112" hFill="yes" singleLine="yes" useLanguages="no">
<ENTRIES>
<ENTRY value="0">
<LANGINFOS>
<LANGINFO lang="*" label="Unknown"/>
<LANGINFO lang="DE" label="Unbekannt"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="1">
<LANGINFOS>
<LANGINFO lang="*" label="Top left"/>
<LANGINFO lang="DE" label="Oben links"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="2">
<LANGINFOS>
<LANGINFO lang="*" label="Top right"/>
<LANGINFO lang="DE" label="Oben rechts"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="3">
<LANGINFOS>
<LANGINFO lang="*" label="Bottom right"/>
<LANGINFO lang="DE" label="Unten rechts"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="4">
<LANGINFOS>
<LANGINFO lang="*" label="Bottom left"/>
<LANGINFO lang="DE" label="Unten links"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="5">
<LANGINFOS>
<LANGINFO lang="*" label="Left top"/>
<LANGINFO lang="DE" label="Links oben"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="6">
<LANGINFOS>
<LANGINFO lang="*" label="Right top"/>
<LANGINFO lang="DE" label="Rechts oben"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="7">
<LANGINFOS>
<LANGINFO lang="*" label="Right bottom"/>
<LANGINFO lang="DE" label="Rechts unten"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="8">
<LANGINFOS>
<LANGINFO lang="*" label="Left bottom"/>
<LANGINFO lang="DE" label="Links unten"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Orientation (FS_0x0112)"/>
<LANGINFO lang="DE" label="Ausrichtung (FS_0x0112)"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
<CMS_INPUT_NUMBER name="FS_0x011A" type="long" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Horizontal resolution (FS_0x011A)"/>
<LANGINFO lang="DE" label="Horizontale Auflösung (FS_0x011A)"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
<CMS_INPUT_NUMBER name="FS_0x011B" type="long" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Vertical resolution (FS_0x011B)"/>
<LANGINFO lang="DE" label="Vertikale Auflösung (FS_0x011B)"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
<CMS_INPUT_COMBOBOX name="FS_0x0128" hFill="yes" singleLine="yes" useLanguages="no">
<ENTRIES>
<ENTRY value="0">
<LANGINFOS>
<LANGINFO lang="*" label="Unknown"/>
<LANGINFO lang="DE" label="Unbekannt"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="1">
<LANGINFOS>
<LANGINFO lang="*" label="No-unit"/>
<LANGINFO lang="DE" label="Keine Einheit"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="2">
<LANGINFOS>
<LANGINFO lang="*" label="Inch"/>
<LANGINFO lang="DE" label="Zoll"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="3">
<LANGINFOS>
<LANGINFO lang="*" label="Centimeter"/>
<LANGINFO lang="DE" label="Zentimeter"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Resolution unit (FS_0x0128)"/>
<LANGINFO lang="DE" label="Auflösungseinheit (FS_0x0128)"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
<CMS_INPUT_DATE name="FS_0x0132" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Change date and time (FS_0x0132)" format="yyyy:MM:dd HH:mm:ss"/>
<LANGINFO lang="DE" label="Änderungsdatum und -zeit (FS_0x0132)" format="yyyy:MM:dd HH:mm:ss"/>
</LANGINFOS>
</CMS_INPUT_DATE>
<CMS_INPUT_NUMBER name="FS_0x829A" type="double" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Exposure time (FS_0x829A)" format="#.#######################"/>
<LANGINFO lang="DE" label="Verschlusszeit (FS_0x829A)" format="#.#######################"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
<CMS_INPUT_NUMBER name="FS_0x8827" type="double" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="ISO speed rating (FS_0x8827)" format="#.#######################"/>
<LANGINFO lang="DE" label="Filmempfindlichkeit nach ISO (FS_0x8827)" format="#.#######################"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
<CMS_INPUT_DATE name="FS_0x9003" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Creation date and time (FS_0x9003)" format="yyyy:MM:dd HH:mm:ss"/>
<LANGINFO lang="DE" label="Aufnahmedatum und -zeit (FS_0x9003)" format="yyyy:MM:dd HH:mm:ss"/>
</LANGINFOS>
</CMS_INPUT_DATE>
<CMS_INPUT_NUMBER name="FS_0x9202" type="double" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Aperture (FS_0x9202)" format="#.#######################"/>
<LANGINFO lang="DE" label="Blendeneinstellung (FS_0x9202)" format="#.#######################"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
<CMS_INPUT_NUMBER name="FS_0x920A" type="double" hFill="yes" singleLine="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Lens focal length (FS_0x920A)" format="#.#######################"/>
<LANGINFO lang="DE" label="Linsenbrennweite (FS_0x920A)" format="#.#######################"/>
</LANGINFOS>
</CMS_INPUT_NUMBER>
The Exif syntax including an example is described under http://www.w3.org/2003/12/exif/.
Conditional display
Ideally, the input components for Exif data should only be displayed on the metadata template if it concerns a picture with Exif data or if values are available for this input component.
To this end, on the Rules tab, the metadata template can be checked using the PROPERTY tag in conjunction with the EMPTY property, to establish whether the respective input component is empty. This can be hidden using the VISIBLE property.
Example for the FS_0x010F field (camera manufacturer):
<!-- hide empty Exif field 0x010F -->
<ON_EVENT>
<WITH>
<NOT>
<PROPERTY source="FS_0x010F" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<PROPERTY source="FS_0x010F" name="VISIBLE"/>
</DO>
</ON_EVENT>