GDPicture
Im Helper nutzen wir GDPicture (https://www.gdpicture.com) um Bilder und PDFs anzeigen zu lassen, diese direkt vom Benutzer editieren zu lassen oder Bearbeitungen via Serverjobs vorzunehmen.
Problemstellung
Ein Vorteil von GDPicture ist, dass es Problemlos über 100 verschiedene Dateitypen lesen und bearbeiten kann. Ebenfalls unterstützt wird die Konvertierung von Dateityp zu Dateityp. Der Nachteil daran ist, dass dadurch einige Bildinformationen und Details verloren gehen können. Um zu verstehen wieso das passiert müssen wir uns vor Auge führen wie es GDPicture überhaupt schafft so viele Dateitypen zu unterstützen. Sie haben unmöglich für jedes einzelne Format zum Beispiel eine Funktion geschrieben um einen Kreis in ein Bild zu zeichnen. GDPicture öffnet eine Datei und konvertiert diese im Arbeitsspeicher in ein eigenes Format. Basierend auf diesem Hausinternen Format werden dann alle Bildmanipulationen durchgeführt. Zum Schluss wird dieses interne Format wieder in eine "lesbare" Datei (zB. jpg oder png) konvertiert und auf dem Dateisystem abgespeichert. Die Quintessenz davon soll sein, dass GDPicture beim speichern IMMER eine NEUE Datei erstellt. Sowas wie "Öffne dieses File, zeichne einen Kreis und lass allen Rest gleich" gibt es nicht, da die Datei zuerst in das GDPicture interne Format konvertiert und danach exportiert wird.
Was heisst das für die Profile
Die Profile muss für jedes einzelne Dateiformat und Feature testen, wie sich GDPicture verhält und gegebenenfalls Attribute, Einstellungen und Metadaten beim öffnen Zwischenspeichern und am Ende wieder Einfügen, um gleichem Informationsverlust vorzubeugen. Zum Beispiel: Gegeben ist ein spezifischer Farbraum in einem TIFF. Es gibt bestimmte Fälle, bei welchen diese Information verlogen kann (zB. ein Bild einfügen). Wir müssen also bei TIFFs Code schreiben, welcher sicherstellt, das dies nicht geschieht. Eine ausführliche Liste mit schon unterstützen Features finden Sie weiter unten.