Exif

Im Prinzip bin ich ein sehr ruhiger und gelassener Mensch. Wobei im Prinzip natürlich im Prinzip nichts bedeutet. Wenn Dinge gegen alle Logik nicht so funktionieren, wie sie sollten, kann mich das bis zur Jähzornsgrenze aus der Ruhe bringen.

Für myGallery arbeite ich gerade am Thema Exif. Diverse Kamerahersteller kochen zum Teil ihr eigenes Süppchen, was was aber nicht weiter schlimm ist. Wesentlich schlimmer ist, daß diverse Grafikprogramme und vor allem aber die GD library den Exif Header nicht erhalten. Werden Bilder zum Beispiel mit Fireworks verkleinert und gespeichert, geht der Header verloren. Gleiches passiert, wenn myGallery ein Bild verkleinert. Genau genommen wird dabei ein neues Bild erzeugt, in das dann ein verkleinertes Ursprungsbild kopiert wird.

Mit den Funktion iptcemped und iptcparse bietet PHP zwei Funktionen, um den binären Header einer JPEG-Datei zu parsen und zu schreiben. Dumm nur, daß beide nicht funktionieren. Keines der offiziellen Beispiele bietet was brauchbares. Sehr verwundert hat mich auch, daß die funktionierende Skripte, die ich mir angesehen habe, nicht die beiden Funktionen verwenden. Stattdessen wird der der Header manuell durch eine Dateioperation eingelesen, gespeichert und wieder geschrieben. Über das Parsen der Daten schweige ich lieber, denn das sah in den Skripten sehr gruselig aus.

Merkwürdig ist, daß sich mit exif_read_data die Exif-Daten bequem in einen Array einlesen lassen. Eine vergleichbare Funktion zum schreiben der Daten gibt es anscheinend nicht. Um jetzt nicht riesige Fremdskripte in myGallery einzubinden, werde ich wohl auch ein eigenes Modul schreiben müssen, daß die Header ausliest und nach der Skalierung wieder zurück schreibt.

Kommentar verfassen