Verlustfreie Datenoptimierung

Hier können Artikel, Tutorials, Bücherrezensionen, Dokumente aller Art, Texturen, Sprites, Sounds, Musik und Modelle zur Verfügung gestellt bzw. verlinkt werden.
Forumsregeln
Möglichst sinnvolle Präfixe oder die Themensymbole nutzen.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Verlustfreie Datenoptimierung

Beitrag von Krishty »

(Vorwort: Unter Verlustfreiheit verstehe ich hier, die Dateien und Dateiformate zu verändern, ohne die Qualität des Inhalts zu verschlechtern. Alle Resultate sollten immer gegengetestet werden. Obwohl die verlinkten Tools üblicherweise zuverlässig und fehlerfrei arbeiten, könnten im Voraus beschädigte Dateien zerstört werden.)

Ein paar Tipps, wie man ohne Qualitätseinbußen Platz sparen kann:


Die kleinsten Daten sind die, die man nicht speichert

Das musste jetzt einfach sein. In Kram, den man nicht braucht, Speicherplatz und Rechenzeit zu investieren, ist Verschwendung. Man sollte löschen, was überflüssig ist, und erst dann optimieren. Überflüssige Daten sind nicht immer offensichtlich: JPEG- und PNG-Dateien können Kommentare und Metadaten bis hin zu Thumbnails enthalten; MP3s Informationen über Online-Shops und Album-Covers.


JPG-Bilder optimieren

JPEG ist zwar grundsätzlich ein verlustbehaftetes Format; die Kompression vieler Dateien lässt sich aber noch nachträglich optimieren, ohne Bilddaten zu zerstören:

Die meisten Programme greifen beim Anlegen von JPEG auf fixe Huffman-Tabellen zurück, anstatt sie für individuelle Bilder auszulegen, und vertun damit 5–10 % Kompressionsrate. Das gilt insbesondere für Erzeuger, die auf wenig Rechenleistung zurückgreifen können, wie bspw. Handykameras. Professionelle Bildbearbeitungsprogramme (bspw. Gimp) bieten die Optimierung meist direkt beim Export an; aber nicht alle Künstler machen davon gebrauch. Nachträglich optimiert jpegtran die Huffman-Kodierung von JPEG-Dateien und konvertiert sie zu progressiven Bildern. Das erhöht die Zeit, die zum Dekodieren nötig ist – weil das Bild in mehreren Durchläufen von einer niedrig zu einer hoch aufgelösten Version verfeinert wird – bewirkt aber, dass die Koeffizienten der Diskreten Kosinustransformation in der Datei sortiert vorliegen und erlaubt dadurch eine erneut um 5–10 % kleinere Datei.

Mozilla hat (mit Unterstützung von Facebook) in den letzten Monaten an mozjpeg gearbeitet – einem libjpg-Ersatz, der JPEG-Verarbeitung optimieren soll ohne dabei Kompatibilität zu opfern. Sie haben in der ersten Iteration die Funktionalität eingebaut, die ursprünglich JPEGrescan als Perl-Skript anbot. Mit Version 2 wurde Trellis-Quantisierung eingeführt. Produkt ist mozjpegtran, das sich kompiliert z.B. bei encode.ru herunterladen lässt. Unter’m Strich werden JPEGs damit verlustfrei um weitere 0,2–1,5 % kleiner als zuvor mit jpegtran aus libjpg.

Code: Alles auswählen

FOR %%A IN (%*) DO (
	%~dp0mozjpegtran.exe -outfile %%A -copy all %%A
)
Ultimativ lässt sich die Huffman-Kodierung durch eine arithmetische Kodierung ersetzen (auch diese Option bietet jpegtran). Das bringt wieder 10–20 %; die Dateien sind dann aber nicht mehr durch den Baseline-Standard abgedeckt (lassen sich also nur noch mit wenigen professionellen Programmen öffnen, weil die Algorithmen bis vor kurzem Patenten unterlagen).

Zu guter Letzt können noch ein paar KiB gespart werden, indem das Vorschaubild aus den EXIF-Daten entfernt wird. EXIF-Thumbnails sind nicht wirklich nötig (Windows’ Explorer unterhält beispielsweise einen Thumbnail-Cache, dessen Inhalt direkt aus dem Bildinhalt berechnet wird, falls die Datei kein Vorschaubild liefert) und können manchmal störend sein (etwa, wenn das Bild mit jpegtran rotiert wurde, das Vorschaubild aber weiter die nicht rotierte Version anzeigt). Normalerweise machen sie einen kaum merklichen Größenunterschied aus; bei kleinen Dateien (z.B. Handyfotos) können es aber viele Prozent sein.
Das EXIF-Manipulationsprogramm schlechthin scheint ExifTool zu sein. Ich finde es ziemlich kompliziert zu bedienen; aber auch hier schafft wieder eine Stapelverarbeitungsdatei Abhilfe:

Code: Alles auswählen

FOR %%A IN (%*) DO (
    %~dp0exiftool -overwrite_original -XMP:All= -IPTC:Keywords= -ThumbnailImage= %%A
)
BMP-, GIF- und PNG-Grafiken optimieren

BMP-Dateien enthalten entweder unkomprimierte oder sehr schwach (RLE-)komprimierte Daten und sollten, falls sie nicht in exotischen Pixelformaten vorliegen, zu PNG-Dateien konvertiert werden. Gleiches gilt für nicht-animierte GIFs, deren LZW-Kompression der von PNG fast immer unterlegen ist. PNG ist grundsätzlich verlustfrei, und die Konvertierung lässt sich bspw. mit OptiPNG durchführen – mehr dazu im nächsten Abschnitt.

PNG an sich erreicht seine Kompression zweistufig: Zuerst wird das zweidimensionale Problem zu einem eindimensionalen reduziert, indem auf jede Zeile ein Filter angewandt wird. Danach werden die Daten mit Deflate komprimiert; wofür zwar die Dekompression spezifiziert ist, nicht aber die Kompression – dadurch ergibt sich eine hohe Bandbreite von möglichen Optimierungen, die von keinem Programm komplett abgedeckt wird. Meine persönliche Wahl ist OptiPNG zur Optimierung der Filter, gefolgt von PNGOUT mit verschiedenen Filterstufen. Je nachdem, wie viel Zeit man ins Sparen weiterer Bits investieren möchte, kann man auch hochgehen bis PNG Monster.
Die Ersparnisse sind ebenso breitbandig wie das Angebot an PNG-erzeugenden und -optimierenden Dateien: Via Paint erzeugte PNG-Grafiken lassen sich mit genügend investierter Zeit oft auf 50 % der Ursprungsgröße optimieren; komplexe Bilder, die von vornherein hoch komprimiert gespeichert wurden, oft nur um eine einstellige Prozentzahl. Das Laden wird grundsätzlich ein Bisschen schneller, weil die Ausführungszeit des Dekompressionsalgorithmus in erster Linie von der Größe der komprimierten Daten abhängig ist. Gegenüber BMP haben optimierte PNGs gewöhnlich nur 60 % (Fotos) bis 10 % (synthetische Grafiken) der Ausgangsgröße.

Zu guter Letzt noch ein Wort zu GIFs, die man als solche behalten möchte oder muss (beispielsweise, weil sie animiert sind): Ich habe lange nach GIF-Optimierungsprogrammen gesucht; aber diese Suche ist oft eine Reise in die Tripod-Zeit des vorherigen Jahrtausends. Das einzig akzeptable, kostenfreie Programm, das ich gefunden habe, ist Trout's GIF Optimizer. Die Ergebnisse sind recht mager: Etwa die Hälfte der GIFs (hauptsächlich Animierte) lässt sich damit um 1–3 % verkleinern; in Einzelfällen auch um bis zu 70 %. (Da die Resultate in anderen Fällen bis zu 20 % hinter dem Original liegen, denke ich, dass es dort enormes Optimierungspotential gibt.)


VHD-Dateien optimieren

Virtuelle Festplatten simulieren eine unerwünschte Nebenwirkung von realen Festplatten: Löscht man Dateien, so werden nur die Einträge in der Dateitabelle gelöscht, aber die Daten werden nicht tatsächlich vom Datenträger gelöscht. Virtuelle Festplatten wachsen deshalb über die tatsächlichen Ansprüche des virtuellen Systems hinaus, weil gelöschte Daten weiter in der VHD-Datei gespeichert bleiben. Erst wenn der ungenutzte Festplattenspeicher genullt wurde, kann das Wirtsystem diesen Platz aus der virtuellen Festplatte zurückgewinnen.

Nutzer von Microsofts Virtual PC können dieser einfachen Anleitung folgen.

Für die, die es mit VHD-Dateien unter Windows von Hand erledigen wollen, erweist sich Mark Russinovichs SDelete als sehr nützlich:
  • Systemsteuerung -> Verwaltung -> Computerverwaltung; links in die Datenträgerverwaltung
  • oben im Menü Aktion -> Attach VHD -> VHD-Datei laden
  • Für alle Partitionen wiederholen: sdelete -z x: (wobei x: der Laufwerksbuchstabe der Partition ist)
  • In der Datenträgerverwaltung links auf die VHD-Festplatte klicken -> Detach VHD -> OK
  • z.B. in Virtual PC über den Assistent für virtuelle Datenträger die VHD-Datei kompaktieren
Der Gewinn schwankt, aber für eine virtuelle Windows-Installation liegt er bei mir grundsätzlich über 10 %.


ZIP-, RAR- und 7Z-Archive optimieren

Der größte Fehler, den man bei der Archivierung machen kann, ist, Daten zu komprimieren, die bereits mit einem schwächeren Kompressionsalgorithmus komprimiert wurden. Zur Archivierung sollten die Daten möglichst „breit aufgefächert“ vorliegen, das bedeutet: alle ZIP-, RAR- und 7Z-Dateien, die im Archiv landen sollen, sollten unbedingt zuvor entpackt werden. Falls man Installer archivieren möchte, die als selbstextrahierendes Archiv ausgeliefert wurden, lohnt es, sie vorher zu entpacken. Dasselbe gilt für ISO-CD-/-DVD-Abbilder, sofern es im Kontext sinnvoll ist. (7-Zip bietet die Möglichkeit, via Rechtsklick -> 7-Zip -> Open archive auch aus „normalen“ Installern, Flash Video-Dateien, ISO-Dateien u.v.m. Ressourcen zu extrahieren – dadurch kann man selektieren, was von dem Paket man archivieren möchte und was nicht.)

Dasselbe gilt übrigens für Bilder und Videos: Anstatt das Archivierungsprogramm mit bereits vorkomprimierten Daten zu füttern (bspw. indem man Bilder als optimierte PNGs übergibt), sollte man sich die wesentlich langsamere und stärkere Kompression des Archivierungsprogramms zu nutze machen.
Für PNGs bedeutet das, dass sie unkomprimiert oder als BMP gespeichert werden sollten; ich habe mit ArchiPNG auch ein Tool geschrieben, das die Kompression zwar aufgibt, die Zeilenfilter aber zugleich für bessere Kompression durch 7-Zip optimiert.
JPGs sind ein schwieriger Fall: Man kann sie nicht ohne weiteres unkomprimiert speichern, weil die Rekodierung möglicherweise stark verlustbehaftet wäre. Andererseits ist ihre Huffmankodierung relativ schwach und nur sehr wenige Archivierungsprogramme benutzen auf JPG optimierte Modelle (bspw. PAQ, das die Huffman-Kodierung durch leistungsfähigere arithmetische Kodierung ersetzt und beim Entpacken wiederherstellt). Vorerst empfehle ich, JPGs zu optimieren, dann zu archivieren und zu hoffen, dass sich der Kompressionsalgorithmus nicht daran verschluckt.

Die Vergleiche von WinZIP, WinRAR und 7-Zip sind meist weniger Vergleiche der Programmleistung als vielmehr Vergleiche der zugrundeliegenden Algorithmen – Deflate bei WinZIP, RAR bei WinRAR und LZMA bei 7-Zip. Hier liegt auch der Hund begraben: Jede Art von Daten lässt sich mit einem anderen Algorithmus optimal komprimieren; Text z.B. ganz anders als Fotos. (Ich persönlich benutze zur Archivierung ausschließlich 7-Zip und beziehe meine Tipps deshalb auch nur darauf.) Dieses Verhalten ist zur Zeit noch sehr wenigen Archivierungsprogrammen inhärent (WinZIPs und WinRARs Unterstützung für eine breite Palette von Kompressionsalgorithmen ist noch relativ jung) und erfordert eine ausgeklügelte Heuristik – oder Brute Force.

Den Brute Force-Ansatz macht sich Ultra7z zunutze: Es fasst alle Dateien eines Archivs gemäß ihren Dateierweiterungen zusammen, probiert für jeden Block verschiedene Filter und Kompressionsalgorithmen aus, und wählt zu guter letzt den optimalen Kandidaten. Dadurch werden 7Z-Archive gut 5–30 % kleiner. Der erste Schritt – die Sortierung nach Dateinamen – offenbart das große Optimierungspotential: Indem man die Dateierweiterungen ändert, kann man dafür sorgen, dass Dateien ähnlichen Inhalts zusammen optimal komprimiert werden. Für Spieleentwickler bedeutet das etwa: 16-Bit-Texturen sollte eine andere Dateierweiterung gegeben werden als 32-Bit-Texturen; Diffuse Maps eine andere als Normal Maps. Mit auf diese Weise optimierten 7Z-Archiven erreicht man bestenfalls die halbe Größe eines naiv gepackten ZIP-Archivs (allerdings ist die Laufzeit recht hoch – etwa eine Stunde pro 100 MiB im Ultra-Modus).


Ich lade jeden ein, die Liste fortzuführen. Insbesondere würden mich Tricks zur verlustfreien Videooptimierung interessieren, weil die den Großteil meiner Festplatte besetzen. Auch bzgl. WAV und MP3 habe ich bisher nichts brauchbares gefunden.
Zuletzt geändert von Krishty am 12.10.2014, 18:14, insgesamt 5-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von CodingCat »

Danke für diese wertvolle Übersicht. Bei der Zeit, die du da reingesteckt hast, findet man wohl kaum etwas Vergleichbares.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Verlustfreie Datenoptimierung

Beitrag von eXile »

Krishty hat geschrieben:Ich lade jeden ein, die Liste fortzuführen. Insbesondere würden mich Tricks zur verlustfreien Videooptimierung interessieren, weil die den Großteil meiner Festplatte besetzen.
Wie wir schon mal in dem anderen Thread angesprochen hatten: x264 kann auch verlustfrei komprimieren.
Krishty hat geschrieben:Auch bzgl. WAV und MP3 habe ich bisher nichts brauchbares gefunden.
Tja, Audio-Kompression ist ein fucking minefield. Ich selber bin eigentlich bei allem, was mir hier als wav reinfliegt, dazu übergegangen, das in ein FLAC umzuwandeln. Für einen Vergleich siehe hier. Die einzigen anderen beiden Formate, die man sich meiner Meinung nach mal anschauen kann, wären Monkey's Audio und WavPack.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

eXile hat geschrieben:
Krishty hat geschrieben:Ich lade jeden ein, die Liste fortzuführen. Insbesondere würden mich Tricks zur verlustfreien Videooptimierung interessieren, weil die den Großteil meiner Festplatte besetzen.
Wie wir schon mal in dem anderen Thread angesprochen hatten: x264 kann auch verlustfrei komprimieren.
Schon; aber der Modus ist für die Konvertierung von nicht verlustfrei gespeicherten Videodaten nutzlos, da er die Kompressionsartefakte des vorherigen Codecs nicht vom Nutzsignal trennen kann, sie mitkomprimiert und das Resultat noch größer ist als das MPEG-2, das man reingeschmissen hat.
eXile hat geschrieben:
Krishty hat geschrieben:Auch bzgl. WAV und MP3 habe ich bisher nichts brauchbares gefunden.
Tja, Audio-Kompression ist ein fucking minefield. Ich selber bin eigentlich bei allem, was mir hier als wav reinfliegt, dazu übergegangen, das in ein FLAC umzuwandeln. Für einen Vergleich siehe hier. Die einzigen anderen beiden Formate, die man sich meiner Meinung nach mal anschauen kann, wären Monkey's Audio und WavPack.
Dankeschön :) FLAC ist mir geläufig. Verstörend, wie die Audioformate seit Jahren nicht durch die Schallmauer kommen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Jofarin
Beiträge: 49
Registriert: 08.11.2011, 13:48

Re: Verlustfreie Datenoptimierung

Beitrag von Jofarin »

Krishty hat geschrieben:Verstörend, wie die Audioformate seit Jahren nicht durch die Schallmauer kommen …
...je öfter ich es lese um so witziger klingt der Satz ^^
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Verlustfreie Datenoptimierung

Beitrag von eXile »

Mir scheint, dass WebP im lossless-Modus PNG abhängt. Die Tools für Windows gibt's hier (png2webpll bzw. webpll2png). In meinen Tests hier ist das auf höchster Komprimierungsstufe (png2webpll -c 100) sowohl bei synthetischen Bildern wie auch bei Photos stärker komprimierend als OptiPNG'te PNG-gemonsterte PNGs.
antisteo
Establishment
Beiträge: 852
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Verlustfreie Datenoptimierung

Beitrag von antisteo »

eXile hat geschrieben:Mir scheint, dass WebP im lossless-Modus PNG abhängt. Die Tools für Windows gibt's hier (png2webpll bzw. webpll2png). In meinen Tests hier ist das auf höchster Komprimierungsstufe (png2webpll -c 100) sowohl bei synthetischen Bildern wie auch bei Photos stärker komprimierend als OptiPNG'te PNG-gemonsterte PNGs.
Wundert mich nicht. PNG war ja auch nur ein gezipptes Bitmap. WebP hingegen ist mit dem Bitstream-Format eine Art H.264 für Bilder.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Wirklich interessant … ich weiß nur nicht, ob ich mir wünschen soll, dass sich WebP durchsetzt. Beim verlustbehafteten Modus war ja von allem zwischen blamabel und katastrophal die Rede, und er ist allen ähnlichen Formaten unterlegen.

Das lässt mich daran zweifeln, dass von allen in den Kinderschuhen steckenden Formaten ausgerechnet WebP dasjenige ist, das man unterstützen sollte.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Ich habe im Eingangspost das Entfernen von EXIF-Thumbnails bei JPEG-Dateien nachgetragen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Mozilla hat (mit Unterstützung von Facebook) in den letzten Monaten an mozjpeg gearbeitet – einem libjpg-Ersatz, der JPEG-Verarbeitung optimieren soll ohne dabei Kompatibilität zu opfern. Sie haben in der ersten Iteration die Funktionalität eingebaut, die ursprünglich JPEGrescan als Perl-Skript anbot. Mit Version 2 wurde Trellis-Quantisierung eingeführt.

Unter’m Strich werden JPEGs damit verlustfrei um weitere 0,2–1,5 % kleiner als zuvor mit jpegtran aus libjpg. Kompilierte Versionen gibt es z.B. hier bei encode.ru. Beispielskript:

Code: Alles auswählen

FOR %%A IN (%*) DO (
	%~dp0mozjpegtran.exe -outfile %%A -copy all %%A
)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Ich habe im Eingangsbeitrag die Informationen über mozjpeg ergänzt und die Optimierung virtueller Festplatten hinzugefügt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Microsoft Office-Dokumente sind seit einiger Zeit eigentlich nur noch Zip-Archive mit XML drin. Als ich daran dachte, wurde mir klar: Die kann man ja optimieren wie alle anderen Zip-Archive auch! Also durch advzip (das die Deflate-Implementierungen von zopfli und 7-Zip ausprobiert), defluff, und deflopt (Links scheinen tot zu sein; müsst euch irgendwo eine funktionierende Version suchen).

Und tatsächlich:

Code: Alles auswählen

FOR %%A IN (%*) DO (

	REM first step: advzip. Saves 0,1 percent after one iteration and 0,2 after 128.
	%~dp0bin\advzip -z -3 -i 128 %%A

	REM "deflopt should generally run after defluff" (SvenBent, encode.ru)
	REM Consider input and output file must NOT be the same or they'll break!
	REM According to encode.ru, multiple passes improve compression.
	%~dp0bin\defluff <%%A >%%A.optCpy2
	%~dp0bin\defluff <%%A.optCpy2 >%%A.optCpy
	%~dp0bin\defluff <%%A.optCpy >%%A.optCpy2
	%~dp0bin\defluff <%%A.optCpy2 >%%A.optCpy
	%~dp0bin\defluff <%%A.optCpy >%%A.optCpy2

	REM	 /b		"Replaces files also when no bytes, but more than zero bits
	REM			 were saved."
	REM	 /k		"Keeps all chunks/structures within files, even the mostly
	REM			 useless ones. […] If /k is specified, then DeflOpt will try to
	REM			 improve deflated data in iCCP, iTXt, and zTXt chunks as well."
	%~dp0bin\DeflOpt /b /k %%A.optCpy2
	%~dp0bin\DeflOpt /b /k %%A.optCpy2
	%~dp0bin\DeflOpt /b /k %%A.optCpy2
	%~dp0bin\DeflOpt /b /k %%A.optCpy2
	COPY /v %%A.optCpy2 %%A
	DEL %%A.optCpy2
	DEL %%A.optCpy
)
Drag & Drop-fertig. Macht Office-Dokumente gut 20 % kleiner. (Die 0,1 % im Kommentar beziehen sich auf ein optimal mit 7-Zip komprimiertes Archiv; nicht auf die popelige Office-Standardimplementierung.)

Nachtrag: ODTs gehen bei mir gerade nicht, weil advzip an einer falschen CRC scheitert. Von Hand extrahieren und neu packen bringt's dafür total, weil man die Bilder direkt mitoptimieren kann (das Thumbnail-PNG auf ein Drittel und so).

Und passt auf, dass ihr auch wirklich nur Office-Dokumente reinfüttert, die Zips sind (mit "PK" beginnen). Sonst werden sie 100 % kleiner, weil gelöscht :) Das Skript kann gern jemand verbessern, damit es dann meckert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2106
Registriert: 25.02.2009, 13:37

Re: Verlustfreie Datenoptimierung

Beitrag von Alexander Kornrumpf »

Krishty hat geschrieben: zopfli
brotli mitbekommen? Wurde vor ein paar Tagen bei fefe "gefeatured".

Link: http://google-opensource.blogspot.de/20 ... n.html?m=0
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Ja, aber es ist nicht kompatibel zu existierenden Formaten. Während du also einfach ein ZIP, PNG, oder sonstwas nehmen und mit zopfli neu komprimieren kannst, und alle Programme können es danach noch normal lesen, bist du mit Brotli zu nichts kompatibel.

Auch sonst ist Brotli nichts Neues – cbloom hat in den letzten Jahren viel über die Entwicklung seiner Kompressionsalgorithmen für Oodle geschrieben; die sind auf LZMA-Niveau und dürften noch deutlich schneller dekomprimieren als Brotli.

Im Gegensatz zu Brotli, das wie ein Range Coder auf Steroids aussieht, wird jetzt ein Asymmetric Numeral System benutzt, das wohl eine effizientere Generalisierung von Arithmetic Coding darstellt und als wesentlicher Durchbruch gefeiert wird.

Wenn man also eh Kompatibilität wegschmeißt, würde ich besser auf sowas setzen – die Chancen stehen gut, dass es in zehn Jahren Zopfli-ähnliche Optimizer dafür gibt, und man dann noch mehr rausholt (während Range Coding spätestens seit Zopfli kaum noch Spielraum für Optimierung bietet).

Ganz allgemein sind die Google-Dinger nicht die große Innovation, als die sie verkauft werden. Sie sind nur die einzigen Implementierungen, die vereinen, was man schon seit einem Jahrzehnt an Optimierungen kennt (die wirklichen Vorreiter haben wohl keine Zeit, praktisch anwendbare Projekte zu entwickeln).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
starcow
Establishment
Beiträge: 522
Registriert: 23.04.2003, 17:42
Echter Name: Mischa Schaub
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von starcow »

Krishty hat geschrieben:PNG ist grundsätzlich verlustfrei, und die Konvertierung lässt...
Was meinst du mit "grundsätzlich" ?
Ist es überhaupt möglich im PNG-Format verlustbehaftet zu komprimieren?
Das ist mir jedenfalls noch nirgends begegnet.

Gruss starcow
Freelancer 3D- und 2D-Grafik
mischaschaub.com
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Das gilt eigentlich nur der Klugscheißer-Ecke :)

Ich meine damit, dass *nur* die Bild- und Kommentardaten verlustfrei gespeichert und wiederhergestellt werden. Rein im Sinne der Informatik ist aber das Muster, das du in deinem Standard-PNG auf die Festplatte schreibst, ebenfalls Information und geht bei der Optimierung verloren.

Wenn du die Datei also z.B. als Keyfile benutzt, um aus ihrem Hash den Schlüssel für deine verschlüsselten Festplatten zu berechnen, ist sie nach der Optimierung nutzlos, obwohl die Bilddaten die selben sind, weil Information (der Hash) verloren gegangen ist. Im sehr strengen Sinne ist die Optimierung also nicht so verlustfrei wie z.B. ein Packen in ZIP oder 7Z (das wiederum nicht perfekt verlustfrei ist, weil das Last-Modified-Datum verloren gehen könnte, usw).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8227
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Verlustfreie Datenoptimierung

Beitrag von Krishty »

Es gibt ein neues Programm um GIFs zu optimieren – flexiGIF: https://create.stephan-brumme.com/flexi ... imization/

… und es ist fantastisch! Die Benchmarks auf der Seite sind legit. Es holt zuverlässig aus jedem GIF ein Bisschen Platz heraus. Da es seit drei Monaten veröffentlicht ist, sind die Kinderkrankheiten nun auch weitgehend beseitigt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten