Was ist eine PGF-Datei?

Progressive Graphics File ist ein Wavelet-basiertes Rasterformat, das progressives Decodieren unterstützt. Es kann Bilddaten mit verlustbehafteter oder verlustfreier Komprimierung codieren.

So funktionieren PGF-Dateien

PGF wandelt Rasterabtastwerte in Wavelet-Koeffizienten um, die als Pyramide von Auflösungsstufen angeordnet sind. Ein Decoder kann nach einer niedrigeren Auflösungsstufe stoppen oder bis zur vollen Größe weiterlesen. Die progressive Darstellung ergibt sich damit aus der Struktur und nicht aus einem separaten Vorschaubild. Die Referenzimplementierung ist der Open-Source-Codec libPGF. Ein dokumentierter produktiver Einsatz ist digiKam, das Thumbnails in seiner internen Datenbank als PGF speichert. Metadaten werden in einem optionalen Benutzerdatenblock mitgeführt, dessen Aufbau die libPGF-Dokumentation nur vorschlägt. Setzen Sie daher nicht voraus, dass ein anderes Werkzeug dort EXIF oder XMP findet. Klären Sie vor dem Austausch sowohl die Verfügbarkeit eines Encoders als auch die Fähigkeit des Empfängers, PGF zu parsen.

Wichtige Fakten

  1. Eine Vorschau erfordert normalerweise nicht die ganze Datei. Der Header speichert die Anzahl der Pyramidenstufen. Jede Stufe hat etwa ein Viertel der Pixel der nächstgrößeren; libPGF rundet ungerade Breiten und Höhen beim Halbieren auf. Ein Verzeichnis der Stufengrößen nach dem Header gibt die zum Decodieren der kleinsten und jeder weiteren Stufe benötigte Bytezahl an. Ein Leseprogramm kann daher einen Anfangsteil der Datei abrufen, ein kleines Bild decodieren und später fortfahren. libPGF stellt dies als Stufenargument seines Leseaufrufs bereit, wobei Stufe 0 das Bild in voller Größe bezeichnet. Prüfen Sie zuerst die Stufenanzahl: libPGF gibt kleinen Bildern weniger Stufen und sehr kleinen gar keine. Eine solche Datei enthält daher möglicherweise nur ihr Bild in voller Größe.
  2. Ob eine PGF-Datei verlustfrei ist, steht in ihrem Header, nicht in ihrem Namen. Das Qualitätsfeld hat für verlustfreie Komprimierung den Wert 0. Größere Werte quantisieren die Wavelet-Koeffizienten gröber. Die libPGF-Dokumentation beschreibt die Qualitätsstufe 4 als verlustbehaftet, aber weiterhin sehr gut. Verlustfrei beschreibt nur den PGF-Encoding-Schritt: Eine Datei mit der Qualitätsstufe 0 wird zu den Pixeln decodiert, die ihr Encoder erhalten hat. Diese können bereits in der Größe geändert oder bearbeitet worden sein, wie bei einem Thumbnail. Unterschiedliche Abmessungen schließen eine exakte Kopie aus, gleiche Abmessungen beweisen sie jedoch nicht. Vergleichen Sie die decodierten Pixel in voller Größe mit dem Original, bevor Sie eine Datei als exakte Kopie behandeln.
  3. Erkennen Sie PGF am Inhalt: Eine Datei beginnt mit den ASCII-Bytes PGF, gefolgt von einem Versionsbyte. Ihre Felder mit mehreren Bytes verwenden Little Endian. Die Dateiendung .pgf allein ist mehrdeutig. Das Backend pgf von Matplotlib speichert beispielsweise Dateien mit der Endung .pgf, die LaTeX-Zeichenbefehle statt PGF-Bilddaten enthalten.
  4. Browser zeigen PGF nicht an: Es gehört nicht zu den Bildformaten, die der MDN-Bildformatleitfaden für das Web aufführt. Für die Webauslieferung ist daher eine Konvertierung in ein Format wie JPEG, PNG oder WebP nötig. Rechnen Sie außerhalb von libPGF mit begrenzter Unterstützung: Die digiKam-Dokumentation bezeichnet PGF als „nicht so bekannt“. Im Jahr 2018 berichtete eine Person im Bugtracker von digiKam, die PGF-Thumbnails der Anwendung anderswo weiterverwenden wollte, nur wenige andere Bibliotheken gefunden zu haben. Im Jahr 2020 antwortete die betreuende Person mit einem eigenständigen PGF-zu-PNG-Konverter.

Wann PGF-Dateien relevant sind

Ergänzen Sie PGF-Unterstützung, wenn ein Archiv oder eine bestehende Anwendung auf das Format angewiesen ist. Seine geringe Verbreitung im Vergleich zu JPEG oder PNG kann die Auswahl verfügbarer Decoder und Encoder sowie die Browserkompatibilität einschränken.

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren