PicExifInfo
obj -> PicExifInfo(var1, int2, int3, int4[, int5]) : logic
Auslesen von Exif-Informationen aus JPEG-Bildern
Details
- obj: Deskriptor eines Picture -Objekts
- var1: Variable für die Information
- int2: Index oder Tag-Id der Information
- int3: Modus (siehe Text)
- int4: Verzeichnis
- int5: Komponente (optional)
- Resultat:
logicFunktion erfolgreich - Siehe: Verwandte Befehle , Picture
Das Exchangeable Image File Format (Exif) speichert Informationen über das mit einer Digitalkamera aufgenommene Bild. Hierzu gehören beispielsweise Informationen wie die Marke des Aufnahmegerätes und die Modell-Bezeichnung. Die Exif-Informationen sind dabei Bestandteil eines Bildes im JPEG-Format. Das Format ist von der Japan Electronics and Information Technology Industries Association (JEITA) definiert. Nähere Informationen über das Format sind auch auf www.exif.org nachzulesen.
Mit dem Befehl PicExifInfo() können die Informationen zu einem bestehenden JPEG ausgelesen werden. Dazu muss das Bild in einem Picture -Objekt geladen sein. Der Deskriptor des Objekts wird in (obj) übergeben. Nach dem Aufruf des Befehls steht in der in (var1) übergebenen Variable die gewünschte Information. Die Variable muss einen geeigneten Typ besitzen, um die entsprechende Information aufzunehmen.
In (int2) wird entweder ein Index oder eine Tag-Id übergeben. Die Tag-Ids bezeichnen bestimmte Exif-Informationen, es sind aber nur einige Tags standardisiert. Abhängig von der Quelle der Bilder, kann es zu Abweichungen sowohl bei den Tag-Ids, als auch bei den Informationen kommen. Bei Bildern aus unbekannter Quelle sollten zunächst die vorhandenen Informationen über eine Schleife ermittelt werden (siehe Beispiele).
In (int3) wird der Modus übergeben. Über den Modus wird bestimmt, welche Informationen zu dem in (int2) angegebenen Index oder angegebener Tag-Id zurückgegeben werden. Folgende Konstanten stehen zur Verfügung:
_PicExifTagName: Name des Tags_PicExifTagTitle: Tag-Titel_PicExifTagDescription: Tag-Beschreibung_PicExifTagValue: Tag-Wert_PicExifTagType: Tag-Typ (siehe_Type...)_PicExifTagComponents: Anzahl der Komponenten bei zusammengesetzten Datentypen
Jede der Konstanten kann mit _PicExifTagIndex kombiniert werden, um anzuzeigen, dass in (int2) ein Index und keine Tag-Id angegeben wurde. Bei der Ermittlung des Datentyps (_PicExifTagType) wird ein Wert zurückgegeben, der mit den _Type...-Konstanten verglichen werden kann. Handelt es sich um einen zusammengesetzten Datentyp, wird _TypeOther zurückgegeben. Die Datentypen der einzelnen Komponenten müssen dann durch erneute Aufrufe der Anweisung ermittelt werden. Die Anzahl der Komponenten kann mit _PicExifTagComponents ermittelt werden. Die Nummer wird dann in (int5) angegeben.
Die Informationen innerhalb des JPEG sind in Verzeichnissen (IFD, Image File Directory) organisiert. Wird direkt über eine Tag-Id auf eine Information zugegriffen, wird als Verzeichnis -1 angegeben. Beim Zugriff über einen Index, muss das Verzeichnis angegeben werden. Folgende Konstanten können in (int4) übergeben werden:
-1: Zugriff über eine Tag-Id_PicExifIfd0: Enthält unter anderem Informationen über die Kamera_PicExifIfd1: Enthält unter anderem Informationen zur Bild-Auflösung_PicExifIfdExif: Enthält unter anderem Informationen zur Exif-Version_PicExifIfdGps: Enthält (GPS-)Informationen über den Standort_PicExifIfdInterop: Enthält Informationen zu den Interoperabilitätsregeln
Die Anweisung konnte erfolgreich ausgeführt werden, wenn true zurückgegeben wurde. false wird zum Beispiel dann zurückgegeben, wenn eine angegebene Tag-Id nicht existiert.
Beispiele:
// Ermitteln des ersten Tag-Namens
tTagIndex # 1;
tResult # aPicture->PicExifInfo(tTagName, tTagIndex, _PicExifTagName | _PicExifTagIndex, _PicExifIfd0);
while (tResult)
{
// Ermitteln des Typs
aPicture->PicExifInfo(tTagType, tTagIndex, _PicExifTagType | _PicExifTagIndex, _PicExifIfd0);
switch (tTagType)
{
// Ganzzahliger Typ
case _TypeInt, _TypeByte, _TypeWord :
{
aPicture->PicExifInfo(tTagInt, tTagIndex, _PicExifTagValue | _PicExifTagIndex, _PicExifIfd0);
...
}
...
}
Inc(tTagIndex);
tResult # aPicture->PicExifInfo(tTagName, tTagIndex, _PicExifTagName | _PicExifTagIndex, _PicExifIfd0);
}
In der Beispiel-Datenbank CodeLibrary befindet sich ein ausführliches Beispiel.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Der in (obj) übergebene Deskriptor ist ungültig_ErrValueInvalid: In (int3) oder (int4) wurde eine ungültige Konstante übergeben._ErrFldType: Die in (var1) übergebene Variable hat den falschen Datentyp