Sunday 29 October 2017

Optipng Binary Options


Ein Leitfaden zur PNG-Optimierung 1. Hintergrund 1.1 Das PNG-Dateiformat Das PNG-Format (Portable Network Graphics) ist ein Format zur Speicherung komprimierter Rastergrafiken. Der Kompressionsmotor basiert auf der von PKWare entwickelten Deflate-Methode RFC1951, die ursprünglich in PKZIP eingesetzt wurde. Das PNG-Format wird durch die PNG-Spezifikation definiert. Diese Spezifikation wurde von einer Ad-hoc-Gruppe mit dem Namen PNG Development Group entwickelt. Und es ist eine internationale Norm (veröffentlicht unter dem förmlichen Namen ISO / IEC 15948) und eine W3C-Empfehlung. PNG war ursprünglich als ein überlegener, patentfreier Ersatz von GIF gedacht. Das endgültige Ergebnis ist ein modernes, erweiterbares, zuverlässiges Bildformat, das in der Lage ist, eine beeindruckende Anzahl von Bildtypen (von 1-Bit-Schwarzweiß-Bildern bis zu 48-Bit-RGB-Bildern mit einem vollen 16-Bit-Alphakanal) Und ausgerüstet von einem deutlich stärkeren verlustfreien Kompressionsmotor (typischerweise 5-25 besser als GIF). Im Gegensatz zu anderen verlustfreien Kompressionsschemata hängt die PNG-Komprimierung nicht allein von der Statistik des Inputs ab, sondern kann je nach Implementierung der Kompressoren in weiten Grenzen variieren. Ein guter PNG-Geber muss in der Lage sein, fundierte Entscheidungen über die Faktoren zu treffen, die die Größe der Ausgabe beeinflussen. Der Zweck dieses Artikels ist die Bereitstellung von Informationen über diese Faktoren und die Beratung bei der Implementierung effizienter PNG-Encoder. 1.2 PNG-Komprimierung Die PNG-Komprimierung arbeitet in einer Pipeline. In der ersten Stufe werden die Bildpixel durch eine verlustfreie arithmetische Transformation mit der Bezeichnung Delta-Filterung geleitet. Oder einfach filtern. Und als eine (gefilterte) Bytefolge weitergesendet. Durch das Filtern wird die Größe der Daten nicht komprimiert oder anderweitig verringert, aber die Daten komprimierbarer. In der zweiten Stufe wird die gefilterte Bytefolge durch den Ziv-Lempel-Algorithmus (LZ77) geleitet, wobei LZ77-Codes erzeugt werden, die in der dritten und letzten Stufe durch den Huffman-Algorithmus weiter komprimiert werden. Die Kombination der letzten beiden Stufen wird als Deflate-Kompression bezeichnet. Ein weit verbreiteter, patentfreier Algorithmus für die universelle, verlustfreie Datenkompression. Die maximale Größe des LZ77-Schiebefensters in Deflate beträgt 32768 Byte und die LZ77-Übereinstimmungen können zwischen 3 und 258 Bytes lang sein. Eine vollständige Beschreibung der PNG-Kompression liegt außerhalb des Umfangs dieser Anleitung. Die PNG-Spezifikation beschreibt das Format vollständig und bietet eine vollständige Liste der Verweise auf die zugrunde liegenden Technologien. 2. Faktoren, die sich auf die PNG-Dateigröße auswirken Wie jedes andere Komprimierungsschema hängt die PNG-Komprimierung von den Statistiken der Eingabedaten ab. Darüber hinaus hängt es von folgenden PNG-spezifischen Parametern ab: Der PNG-Bildtyp Die PNG-Delta-Filter Die Suchstrategie der LZ77-Übereinstimmungen Die Größe der Huffman-Puffer im Deflate-Encoder Abhängig davon, wie diese Parameter durch die Implementierung der PNG-Kompression ausgewählt werden Kann in weiten Grenzen variieren. Der Prozess der Auswahl der besten Konfiguration ist rechnerisch unzulässig, aber Heuristiken zur Auswahl einer zufriedenstellenden Konfiguration sind verfügbar. Das Problem der Verbesserung dieser Heuristik stellt ein interessantes Forschungsobjekt dar. 2.1 Der PNG-Bildtyp Der Typ eines PNG-Bildes ist im IHDR-Bildkopf definiert. Das Bild hat eine bestimmte Bittiefe, bis zu 16 Bits pro Sample und einen bestimmten Farbtyp, von Graustufen bis RGBAlpha. Wenn zwei PNG-Dateien unterschiedlicher Typen genau dasselbe Bild repräsentieren, kann jede Datei als verlustfreie Transformation der anderen betrachtet werden. Eine verlustfreie Transformation kann den unkomprimierten Strom reduzieren, und eine solche Transformation wird als Bildverkleinerung bezeichnet. In den meisten Fällen sind Bildverkleinerungen in der Lage, den komprimierten Strom (der in der Tat unser Interesse ist) als indirekte Wirkung der Verringerung der Größe des Verdichtereingangs zu verringern. Die möglichen Bildverkleinerungen sind: Bittiefenverkleinerung Die Bittiefe kann auf einen für alle Abtastungen akzeptablen Mindestwert reduziert werden. Wenn beispielsweise alle Abtastwerte in einem 16-Bit-Bild die Form (2561) n haben. (Z. B. 0000, 2323, FFFF), dann kann die Bittiefe auf 8 reduziert werden, und die neuen Abtastwerte werden n. (Z. B. 00, 23, FF). Farbreduktion - Wenn ein RGB-Bild 256 verschiedene Farben oder weniger hat, kann es als Palettenbild neu codiert werden. - Wenn ein RGB - oder Palettenbild nur graue Pixel hat, kann es als Graustufen neu codiert werden. Eine Farbreduktion kann auch eine Bittiefenreduktion ermöglichen. Farbpalettenreduktion Wenn die Farbpalette redundante Einträge enthält (d. h. doppelte Einträge, die denselben RGB-Wert angeben) oder sterile Einträge (d. h. Einträge, die keinen Korrespondenten in den Rohpixeldaten aufweisen), können diese Einträge entfernt werden. Eine Farbpalettenreduktion kann auch eine Bittiefenreduktion ermöglichen. Alpha-Kanal-Reduzierung Wenn alle Pixel in einem GrayscaleAlpha oder einem RGBAlpha-Bild völlig opak sind (dh alle Alpha - Komponenten gleich 2 Bit-Tiefe -1 sind) oder wenn die Transparenzinformationen vollständig in einem (viel billigeren) TRNS-Chunk gespeichert werden können, Kanal entfernt werden kann. Es gibt jedoch einige Fälle, in denen einige Bildtypreduktionen nicht notwendigerweise zur Reduktion des komprimierten Stroms führen. Die PNG-Tech-Website enthält experimentelle Analysen dieser Möglichkeiten zum Beispiel, siehe Artikel 8 Bits pro Pixel in palettierten Bildern. Interlacing, nützlich für ein schnelleres, progressives Rendering, ist eine weitere Komponente des PNG-Bildtyps, die die Komprimierung beeinflusst. In einem Interlaced-Stream werden die den benachbarten Pixeln entsprechenden Abtastwerte weit weg gespeichert, so daß die Daten darin weniger korreliert und weniger komprimierbar sind. Im Gegensatz zu JPEG, wo Interlacing die Kompression leicht verbessern kann, verschlechtert das PNG-Interlacing die Komprimierung signifikant. 2.2 Die PNG-Delta-Filter Die Rolle der Filterung kann im folgenden Beispiel dargestellt werden. Man nehme die Sequenz 2, 3, 4, 5, 6, 7, 8, 9 an. Obwohl sie viel Redundanz aufweist, ist die Sequenz weder durch einen Ziv-Lempel-Kompressor noch durch einen Huffman-Kompressor komprimierbar. Wenn man jedoch eine einfache und reversible Transformation durchführt, wobei jeder Wert durch die numerische Differenz zwischen ihm und dem Wert nach links ersetzt wird, wird die Sequenz zu 2, 1, 1, 1, 1, 1, 1, 1, was stark komprimierbar ist . Das PNG-Format verwendet fünf Arten von Filtern: Keine. Links. Nach oben. Durchschnitt. Und Paeth. Der erste Filter verlässt die ursprünglichen Daten intakt und die anderen vier subtrahieren von jedem Pixel einen Wert, der die benachbarten Pixel von links, oben und / oder oben links umfasst. Jeder Zeile ist ein bestimmter Filter zugeordnet, der auf alle Pixel dieser Zeile angewendet wird. Daher kann ein Bild in einer riesigen Anzahl von möglichen Konfigurationen (5 Höhen) delta-gefiltert werden, und jede Konfiguration führt zu einer unterschiedlichen komprimierten Ausgabe. Zwei verschiedene Filterkonfigurationen können einen Unterschied in der komprimierten Dateigröße durch ein paar Faktoren bewirken, so daß eine sorgfältige Auswahl von Filtern von überragender Bedeutung ist. Es ist möglich, einen einzelnen Filter auf alle Zeilen anzuwenden oder verschiedene Filter auf verschiedene Zeilen anzuwenden. Im ersteren Fall ist der Filterprozess in dem letzteren fixiert, er ist adaptiv. Während eine erschöpfende Suche unmöglich ist, schlägt die PNG-Spezifikation eine heuristische Filterstrategie vor: Wenn der Bildtyp Palette ist oder die Bittiefe kleiner als 8 ist, dann filtern Sie das Bild nicht (d. H. Verwenden Sie feste Filterung mit dem Filter Kein). (Der andere Fall) Wenn der Bildtyp Graustufen oder RGB (mit oder ohne Alpha) ist und die Bittiefe nicht kleiner als 8 ist, verwenden Sie die adaptive Filterung wie folgt: unabhängig für jede Zeile. Wenden Sie alle fünf Filter an und wählen Sie den Filter aus, der die kleinste Summe der absoluten Werte pro Zeile erzeugt. Fälle, in denen die obigen Heuristiken weniger als optimal sind, werden beispielsweise auf der PNG-Tech-Website gezeigt, siehe Brute-force vs. heuristische Filterung. 2.3 Die Strategie der Suche nach LZ77-Übereinstimmungen Der Ziv-Lempel-Algorithmus arbeitet unter der Annahme, daß zusammenhängende Sequenzen wiederholt im Eingangsstrom auftreten. Wenn die zu codierende Sequenz mit einer oder mehreren Sequenzen übereinstimmt, die bereits im Gleitprotokollfenster vorhanden sind, sendet der Codierer ein LZ77-Paar (Distanzlänge), das auf die nächste Übereinstimmung zeigt. In den meisten LZ77-Inkarnationen, einschließlich Deflate, sind kleinere Distanzcodes genauer kodiert. In Deflate werden insbesondere die regulären (nicht übereinstimmenden) Symbole und die Übereinstimmungslängen an denselben Huffman-Codierer gesendet, während die Übereinstimmungsabstände zu einem gesonderten Huffman-Codierer gesendet werden. Wenn die LZ77-Übereinstimmungen zwischen den akzeptierten Grenzen liegen (d. H. Sie sind nicht kürzer als 3 und nicht länger als 258), wird eine gierige Strategie sie als Ersatz für die Symbole akzeptieren, denen sie entsprechen. Die gierige Strategie ist vorzuziehen, wenn Sie Textdateien oder viele Arten von Binärdateien komprimieren, aber bei der Komprimierung gefilterter Daten, z. B. der Byte-Zeichenfolgen, die aus einem PNG-Filter stammen, kann es suboptimal sein. Gefilterte Daten bestehen meist aus kleinen Werten mit einer Pseudozufallsverteilung. Daher kann es in bestimmten Situationen wünschenswert sein, die Kodierung einzelner Symbole zu bevorzugen, auch wenn Übereinstimmungen, die diese Symbole ersetzen können, existieren. Die zlib-Referenzbibliothek ist eine Referenzimplementierung von Deflate, die von der PNG-Referenzbibliothek weiter verwendet wird. Standardmäßig wählt zlib die gierige Strategie aus, aber der Benutzer kann seine oder ihre benutzerdefinierten Einstellungen über den Strategieparameter angeben. Dieser Parameter kann einen der folgenden Werte annehmen: - ZDEFAULTSTRATEGY 0. die standardmäßige gierige Suchstrategie. - ZFILTERED 1. eine Strategie, bei der die Spiele nur akzeptiert werden, wenn ihre Länge 6 oder größer ist. - ZHUFFMANONLY 2. eine schnelle Strategie, bei der der Ziv-Lempel-Algorithmus vollständig umgangen wird und alle Symbole aus dem Eingang direkt vom Huffman-Codierer codiert werden. - ZRLE 3 (erschienen in der Reihe zlib-1.2.x), eine schnelle Strategie, bei der der LZ77-Algorithmus im Wesentlichen auf den Run-Length Encoding Algorithmus reduziert wird. Mit anderen Worten werden die Übereinstimmungen nur akzeptiert, wenn ihre Distanz 1 ist. Beispielsweise kann die 10-Symbol-Sequenz aaaaaaaaaa durch Entfernung des Abstands 1 aus dem Bild LZ77-codiert werden als a (Distanz 1, Länge 9), diese Codierung kann Als eine eigenständige Lauflängencodierung (die sich von dem klassischen RLE unterscheidet, indem die Länge 9 anstelle des Zählers 10 verwendet wird) betrachtet werden. Der Strategieparameter wirkt sich nur auf das Komprimierungsverhältnis aus. Es wirkt sich nicht auf die Korrektheit der komprimierten Ausgabe aus, auch wenn sie auf einen unzulässigen Wert eingestellt ist. Es wurde experimentell beobachtet, dass die LZ77-Suche gelegentlich in der Lage ist, kleinere PNGs zu erzeugen, wenn sie weniger erschöpfend ist. Der Grund für diese Handlung liegt in der gleichen Kategorie strategischer Recherchen, die hier diskutiert werden. Leider gibt es keine bekannte Methode zu antizipieren, welche Suchstufe (von den schnellsten und den am wenigsten erschöpfenden bis zu den langsamsten und erschöpfendsten) besser ist, als wenn man annimmt, dass die erschöpfendste in den meisten Fällen besser ist. Unglücklicherweise liefert selbst eine gefilterte Strategie nicht immer bessere Ergebnisse als eine gierige Strategie auf gefilterte Eingabe, und das einzige bekannte Verfahren, um die beste Kombination zu erhalten, ist durch mehrere Versuche. Experimente und Messungen können wiederum auf der PNG-Tech-Website gefunden werden, siehe den ursprünglichen ZRLE-Strategievorschlag. 2.4 Die Größe der Huffman-Puffer Wie bereits erwähnt, ist der Entropie-Codierer innerhalb der Deflate-Methode der statische Huffman-Algorithmus. Die Ausgabe von LZ77 wird in einen Puffer eingespeist, der gelegentlich durch Senden eines statischen Huffman-Baums, gefolgt von allen Huffman-Codes, an den Ausgang von Deflate geleitet wird. Danach werden sowohl der Puffer als auch der Huffman-Baum zurückgesetzt, wobei darauf gewartet wird, daß die nachfolgenden LZ77-Codes kommen und der Puffer wieder aufgefüllt wird. Die Deflate-Spezifikation bezieht sich auf dynamische Huffman-Codes. Dies ist jedoch eine Fehlbezeichnung, bei der der Begriff Dynamik im Gegensatz zu den festen Huffman-Codes verwendet wird. Die festen Huffman-Codes sind einfach nach einem vorgegebenen Huffman-Baum aufgebaut, ohne Rücksicht auf die tatsächlichen Symbolfrequenzen. Die dynamischen Huffman-Codes, auf die sich die Deflate-Spezifikation bezieht, werden NICHT von dem dynamischen Huffman-Algorithmus gebaut, wie er beispielsweise von Faller, Gallager und Knuth (dem FGK-Algorithmus) oder von Vitter (dem V-Algorithmus) definiert ist. Der vordefinierte Huffman-Baum wurde in PKZIP als schnelle Komprimierungsalternative eingeführt, liefert aber selbst auf Text schlechte Ergebnisse und ist bei der PNG-Kompression fast unbrauchbar. Dennoch ist ein PNG-Stream, der Codes enthält, die vom festen (vordefinierten) Huffman-Baum erstellt werden, ein gültiger Strom, und ein kompatibler PNG-Leser muss diesen Stream korrekt decodieren. Es ist wünschenswert, die Puffergrenzen festzulegen, so daß Sequenzen, die demselben Wahrscheinlichkeitsmodell entsprechen, in denselben Huffman-Puffer passen. Methoden für die Annäherung an diese Grenzen existieren, aber sie werden nicht in der Mainstream-Deflate-Implementierung (en) verwendet. Stattdessen werden die Puffer gespült, wenn ein Grenzwert (typischerweise 16k LZ77-Codes) erreicht wird. Dies ist jedoch ein schneller Ansatz, und die Ergebnisse sind zufriedenstellend. Die Größe der Huffman-Puffer wird indirekt durch den Encoderspeicher (Verbrauch) bestimmt. Aus diesem Grund können bestimmte Speicherstufen für bestimmte Arten von Bildern gut sein. 3. PNG (verlustfreie) Optimierungsprogramme Die Vielzahl von PNG-Codierungsprogrammen finden Sie unter libpng. org/pub/png/pngapps. html. Ihre Leistungsfähigkeit variiert so stark wie die Reichweite möglicher Kompressionsverhältnisse die guten Encoder sind zumindest die Anwendung der Filterheuristiken, kurz beschrieben in der PNG-Spezifikation und oben dargestellt. Einige Programme gewinnen zusätzliche Komprimierung durch die Verwerfung einiger Daten in den Eingabebildern (so dass diese Programme verlustbehaftet sind) Dieser Abschnitt enthält die kleine Liste der PNG-Optimierungsprogramme, die ein besonderes Anliegen zum Erhalten einer Dateigröße so klein wie möglich zu zeigen. Sie arbeiten, indem sie wiederholte Komprimierungstests durchführen, verschiedene Parametersätze anwenden und den Parametersatz auswählen, der die kleinste komprimierte Ausgabe liefert. Pngrewrite von Jason Summers, erhältlich unter pobox / jason1 / pngrewrite. Ist ein Open-Source-Programm, das verlustfreie Bildreduktionen durchführt. Es funktioniert am besten in Verbindung mit pngcrush (siehe unten) der Benutzer sollte pngcrush nach pngrewrite laufen lassen. Pngcrush von Glenn Randers-Pehrson, erhältlich unter pmt. sourceforge. net/pngcrush. Ist ein Open-Source-Programm, das über PNG-Filter und zlib (Deflate) - Parameter iteriert, das Bild wiederholt unter Verwendung jeder Parameterkonfiguration komprimiert und die Konfiguration auswählt, die die kleinste komprimierte (IDAT) Ausgabe liefert. Bei der Benutzer-Option kann das Programm einige (unter 10) oder viele (eine Brute-Force Traversal über mehr als 100) Konfigurationen erkunden. Das Verfahren zur Auswahl der Parameter für wenige Versuche ist besonders effektiv, und die Verwendung eines Brute-Force-Traversals wird im allgemeinen nicht empfohlen. Darüber hinaus bietet pngcrush eine Vielzahl von zusätzlichen Funktionen wie die Wiederherstellung von fehlerhaften PNG-Dateien (z. B. Dateien, die schlechte CRCs enthalten) und die Bearbeitung von PNG-Metadaten auf Chunk-Ebene. OptiPNG von Cosmin Trua, erhältlich unter cs. toronto. edu/pngtech/optipng. Ist ein neueres Open-Source-Programm, inspiriert von pngcrush. Sondern entworfen, um flexibler zu sein und schneller zu laufen. Im Gegensatz zu pngcrush. OptiPNG führt die Tests vollständig im Speicher durch und schreibt nur die endgültige Ausgabedatei auf dem Datenträger. Darüber hinaus bietet es mehrere Optimierungs-Presets für den Benutzer, der aus einer Reihe von Optionen von sehr wenigen Tests bis zu sehr vielen Tests (im Gegensatz zu den gröberen smart vs brute Option von pngcrush angeboten) wählen können. Es ist wichtig zu erwähnen, dass das erreichte Kompressionsverhältnis weniger und weniger wahrscheinlich ist, sich zu verbessern, wenn übergeordnete Presets (Trigerring mehr Versuche) verwendet werden. Selbst wenn das Programm automatisch über mehr als 200 Konfigurationen sucht (und die fortgeschrittenen Benutzer auf mehr als 1000 Konfigurationen zugreifen können), sollte ein Preset, das etwa 10 Tests auswählt, für die meisten Benutzer zufriedenstellend sein. Darüber hinaus sollte eine Voreinstellung, die zwischen 30 und 40 Versuche auswählt, für alle Benutzer zufriedenstellend sein, denn es ist sehr, sehr unwahrscheinlich, dass sie durch eine breitere Suche signifikant geschlagen wird. AdvanceCOMP von Andrea Mazzoleni ist eine Reihe von Tools für die Optimierung von ZIP / GZIP-, PNG - und MNG-Dateien, basierend auf dem, was in den Versuchsanordnungen vorkommt Auf dem leistungsstarken 7-Zip-Deflationsmotor. Der Name des PNG-Optimierungswerkzeugs ist AdvPNG. Zum Zeitpunkt dieses Schreibens führt AdvPNG keine Bildverkleinerungen durch, so dass die Verwendung von pngrewrite oder OptiPNG vor der Optimierung erforderlich sein kann. Doch angesichts der Effekte der 7-Zip Deflation, AdvanceCOMP ist ein starker Anwärter. Das AdvanceCOMP-Tool-Set ist Teil des AdvanceMAME-Projekts, das auf der Website advancemame. sourceforge. net verfügbar ist. PNGOut von Ken Silverman, erhältlich unter advsys. net/ken/utils. htm. Ist ein frei verfügbares kompiliertes Programm (kein Quellcode), das auf Windows und Linux läuft. Nach unseren Tests ist das Kompressionsverhältnis von PNGOut vergleichbar mit dem von AdvPNG. Leider können wir aufgrund des Mangels an Informationen nicht viel über dieses Tool sagen. 4. Eine zusätzliche Anmerkung zur Verlustenlosigkeit Was ist eine verlustfreie PNG-Optimierung, nach all Dies ist eine einfache Frage, deren Antwort intuitiv, aber nicht so einfach ist. Verlustlosigkeit im strengsten Sinne, wo keine Informationen verloren gehen, kann nur erreicht werden, indem man die ursprüngliche Datei (jede Datei) intakt läßt oder indem man sie umwandelt (zB komprimiert, verschlüsselt), so daß eine inverse Transformation vorliegt Die es vollständig zurückgewinnt, Stück für Stück. Im Falle von PNG-Bildern hat diese Bedingung der strengen Verlustlosigkeit wenig Bedeutung für den Gelegenheitsgrafikbenutzer und ist daher zu stark. Es gibt Fälle, in denen strenge Verlustlosigkeit zum Beispiel beim Umgang mit zertifizierten PNG-Dateien erforderlich ist, deren Integrität durch eine externe Prüfsumme wie MD5 oder SHA garantiert wird. Oder durch eine digitale Signatur wie dSIG. Die meiste Zeit ist es jedoch wünschenswert, den Begriff der PNG-Verlustlosigkeit zu entspannen, in dem Maße, daß keine Informationen verloren gehen, die das gerenderte Bild betreffen und den semantischen Wert der Metadaten, die das Bild begleiten. Dies ermöglicht dem Benutzer, sich auf das zu konzentrieren, was wirklich wichtig ist, wenn es darum geht, den Inhalt eines PNG-Bildes zu bewahren, und ermöglicht das Konzept der PNG-Optimierungstools. Eine verlustfreie Transformation einer PNG-Bilddatei ist eine Transformation, die die gerenderten RGB-Triples (die RGB-Triples, die entweder direkt oder aus einem Palettenindex oder einer Grau-RGB-Erweiterung kommen) vollständig bewahrt, die gerenderte Transparenz Entweder direkt oder aus einem tRNS-Chunk oder der impliziten 100 Opazität, die aufgrund des Fehlens einer expliziten Transparenzinformation angenommen wird), die Reihenfolge des Renderings (sequentiell oder interlaced) und die Semantik, die durch die Nebenblöcke enthalten ist. Diese Definition ermöglicht die Ausführung der oben erwähnten Bildreduzierungsoperationen und die Rekomprimierung von IDAT. Es erlaubt auch die Veränderung oder die Beseitigung von anderen Informationen, die technisch gültig sind, aber keinen Einfluss auf die Darstellung der Bildpixel haben: Die Informationen, die Deflate-Streams betreffen, entweder innerhalb von IDAT. Oder in anderen komprimierten Abschnitten wie zTXt. ITXt oder iCCP, z. B. Die LZ77-Fenstergröße, die Art und Größe der Deflate-Blöcke usw. (Es kommt nur darauf an, dass die dekomprimierte Bytefolge dieselbe bleibt.) Die Reihenfolge der Paletteneinträge innerhalb eines PLTE-Chunk. (Beim Ändern dieser Reihenfolge müssen die Informationen, die davon abhängen, wie z. B. die palettencodierten Pixel oder die tRNS-Informationen, entsprechend aktualisiert werden.) RGB-Triples, die keinem Pixel im tatsächlichen Bild entsprechen, sondern in einer Datei gespeichert sind TRNS-Stück. Vollständige undurchsichtige tRNS-Einträge in einem Palettenbild. Gamma-Korrektur (GAMA) oder signifikante Bit - (sBIT) - Informationen innerhalb eines Bildes, das ausschließlich aus Samples besteht, deren Intensität entweder Minimum (0) oder Maximum (2 Bit-Tiefe -1) ist. Die Tatsache, dass ein Textkommentar unkomprimiert in einem tEXt-Chunk oder komprimiert in einem zTXt-Chunk oder ohne Übersetzung in einem iTXt-Chunk gespeichert wird. Und so weiter. Wenn eine der verwerflichen Informationen in einer bestimmten Anwendung wichtig ist und eine verlustfreie PNG-Optimierung noch wünschenswert ist, empfiehlt es sich, diese Informationen in zusätzlichen Abschnitten zu speichern, anstatt sie in kritischen Abschnitten zu hacken. Wenn z. B. sterile Paletteneinträge erforderlich sind (z. B. für spätere Bearbeitungsstufen), empfiehlt es sich, diese innerhalb eines vorgeschlagenen Paletten (sPLT) Stückes zu speichern, anstatt sie innerhalb von PLTE zu halten. 5. Selektive Bibliographie Neben den besprochenen Spezifikationen enthalten die nachstehenden Referenzen wesentliche Informationen, die notwendig sind, um den Inhalt dieses Artikels zu verstehen. Thomas Boutell, Glenn Randers-Pehrson et al. Portable Network Graphics (PNG) Spezifikation, zweite Ausgabe. ISO / IEC 15948: 2003 (E) W3C Empfehlung 10. November 2003. David A. Huffman. Verfahren zum Aufbau von minimalen Redundanzcodes. Im Verfahren des Instituts für Radioingenieure. Vol. 40, Nr. 9, S. 1098-1101, September 1952. Jacob Ziv und Abraham Lempel. Ein universeller Algorithmus für die Datenkompression. IEEE-Transaktionen zur Informationstheorie. Vol. IT-23, Nr. 3, S. 337-343, Mai 1977. Aufgrund eines historischen Unfalls ist der berühmte Algorithmus besser bekannt als der Lempel-Ziv (LZ) - Algorithmus, obwohl der Ziv-Lempel-Algorithmus ein legitimerer Name ist. Greg Roelofs. PNG: Die endgültige Führung. OReilly und Associates, 1999. Copyright-Kopie 2003-2008 Cosmin Trua. Erlaubnis, frei zu verbreiten. Erschienen: 7. April 2003. Letzte Aktualisierung: 10. Mai 2008.Das optipng-Befehlszeilenprogramm als lesbarer / beschreibbarer Stream. Dies ist praktisch für Situationen, in denen Sie nicht über das Schreiben der Eingabe auf Disc und das Lesen der Ausgabe danach Sorgen machen wollen. Wenn Sie keine optipng-Binärdatei in Ihrem PATH haben, versucht node-optipng, eine der Binärdateien zu verwenden, die vom node-optipng-bin-Paket bereitgestellt werden. Der Konstruktor nimmt optional ein Array von Befehlszeilenoptionen für die optipng-Binärdatei auf: OptiPng als Webdienst: Stellen Sie sicher, dass Sie node. js und npm installiert haben, und führen Sie dann aus: 3-Klausel BSD-Lizenz - Details finden Sie in der LICENSE-Datei. Sie können diese Aktion nicht zu diesem Zeitpunkt durchführen. Sie haben sich mit einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre Sitzung neu. Sie haben sich in einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre session. The optipng Befehlszeile-Dienstprogramm als lesbarer / beschreibbarer Stream. Dies ist praktisch für Situationen, in denen Sie donapost wollen Sorgen über das Schreiben der Eingabe auf Disc und das Lesen der Ausgabe danach. Wenn Sie donapost über eine optipng-Binärdatei in Ihrem PATH verfügen, versucht node-optipng, eine der Binärdateien zu verwenden, die vom node-optipng-bin-Paket bereitgestellt werden. Der Konstruktor nimmt optional ein Array von Befehlszeilenoptionen für die optipng-Binärdatei auf: OptiPng als Webdienst: Stellen Sie sicher, dass Sie node. js und npm installiert haben, und führen Sie dann aus: 3-Klausel BSD-Lizenz - Details finden Sie in der LICENSE-Datei. Es war nie einfacher, Entwicklerteams mit unterschiedlichen Berechtigungen und mehreren Projekten zu verwalten. Erfahren Sie mehr über private Pakete und Organisationshellip Mitarbeiter Liste Ausprobieren Abhängigkeiten (4) Sie brauchen Hilfe Legal Stuff

No comments:

Post a Comment