Mein Dateioptimierungstool

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Mein Dateioptimierungstool

Beitrag von Krishty » 24.08.2019, 17:59

Ich bin gerade dabei, meine ganzen privaten Projekte öffentlich zu machen, damit die nicht auf meiner Platte verschimmeln …

Darum hier mein Tool, mit dem ich meine Backups und die Bilder auf meiner Website verlustfrei optimiere:

Bild

Download (Windows 64-Bit): https://papas-best.com/downloads/optimi ... timizer.7z

In den Tabs könnt ihr so Sachen einstellen wie: Metadaten wegschmeißen; JPEGs automatischen derotieren; usw. Dann den Pfad mit zu optimierenden Dateien auswählen, Analyze drücken, Optimize drücken.

Achtung:
  • Vorher immer ein Backup anlegen!
  • Alles, was DEFLATE nutzt (PNG, ZIP, …) kann Tage oder Wochen zur Optimierung brauchen. Mir ist’s egal; das läuft dann halt im Hintergrund.
  • Das Änderungsdatum der Dateien wird minimal angepasst um Dateien als optimiert zu markieren, so dass sie beim nächsten Mal nicht erneut durchgekaut werden.
  • Im Fehlerfall könnte im Temp-Verzeichnis ein Ordner mit Log-Datei und Artefakten zurückbleiben.
  • Falls euer Benutzername oder das Verzeichnis erweiterte Unicode-Zeichen nutzt, funktionieren die JPEG-Optimierungen wegen EXIFTools Perl-Runtime nicht.
Das Tool setzt so ziemlich alles um, was ich schon im Thread über verlustfreie Datenoptimierung geschrieben habe; nur besser :) Es kann einen Thread pro Datei zur Optimierung nutzen, damit die CPU auch ordentlich glüht. Die eigentliche Optimierungsarbeit übernehmen die Tools, die dem Download beiliegen.

Da rauscht seit Jahren fast jedes PNG, GIF, und ZIP von mir durch. Letztens habe ich die UI für die Anzeige der Sub-Prozesse von pollend auf Event-basiert umgestellt und es dann auch direkt für ein Release vorbereitet.

Ist hoffentlich dem einen oder anderen nützlich, der ein paar MiB Festplattenspeicher/Downloadgröße/Bandbreite sparen möchte.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Tiles
Establishment
Beiträge: 1426
Registriert: 11.01.2003, 14:21
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Tiles » 24.08.2019, 19:12

Brauchen kann ich es nicht wirklich, wer schert sich heutzutage noch um ein paar Kilobyte. Und ich gehöre auch zu den Banausen ^^

Aber ich finde das Projekt Klasse :)
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 31.08.2019, 19:03

Tiles hat geschrieben:
24.08.2019, 19:12
Brauchen kann ich es nicht wirklich, wer schert sich heutzutage noch um ein paar Kilobyte.
:D Wenn ich demnächst mal wieder ein paar CPU-Kerne frei habe, lasse ich ihn gern über BfA laufen. Kann ja nicht schaden :)

————

Aktualisierte Version: https://papas-best.com/downloads/optimi ... timizer.7z
  • updated ECT to version 0.8.2 from 2018-08-07
  • fixed inadvertent gzip optimization
  • fixed leftover temporary files with recursive optimization
  • fixed a crash with the context menu
  • fixed a crash cancelling failed jobs
  • fixed error message when archive content failed
  • fixed control alignment
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
scheichs
Establishment
Beiträge: 439
Registriert: 28.07.2010, 20:18

Re: Mein Dateioptimierungstool

Beitrag von scheichs » 01.09.2019, 11:19

Also ich hab's mal ausprobiert. Wie lange optimiert der an PNG? Ich hab mal so'ne Stunde an einem 1024x1024er PNG rumrechnen lassen, aber es wurde nicht fertig. War das mit den Tagen und Wochen ernst gemeint (also pro Datei) ?
Die Anwendung selbst funktioniert aber sehr cool. Schönes Tool!

Benutzeravatar
Tiles
Establishment
Beiträge: 1426
Registriert: 11.01.2003, 14:21
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Tiles » 01.09.2019, 13:33

Sag mal, bei odt, wird die Optimierung nicht beim nächsten Bearbeiten wieder zertrümmert? Dann schreibt Libre / Open Office ja ein neues Zipfile ...
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 01.09.2019, 18:39

scheichs hat geschrieben:
01.09.2019, 11:19
Also ich hab's mal ausprobiert. Wie lange optimiert der an PNG? Ich hab mal so'ne Stunde an einem 1024x1024er PNG rumrechnen lassen, aber es wurde nicht fertig. War das mit den Tagen und Wochen ernst gemeint (also pro Datei) ?
Ja; bei 1024×1024 musst du schon mit einem Tag rechnen. Wenn 256 oder weniger Farben drin sind, dauert es nochmal länger weil die Palettenreihenfolge genetisch permutiert wird.
Tiles hat geschrieben:
01.09.2019, 13:33
Sag mal, bei odt, wird die Optimierung nicht beim nächsten Bearbeiten wieder zertrümmert? Dann schreibt Libre / Open Office ja ein neues Zipfile ...
Ja, das ist bei allen Formaten so. Darum ist’s vor allem für Dinge gedacht, die einmal geschrieben und oft gelesen werden – z. B. Downloads.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Jonathan
Establishment
Beiträge: 1335
Registriert: 04.08.2004, 20:06

Re: Mein Dateioptimierungstool

Beitrag von Jonathan » 02.09.2019, 08:13

Die Frage ist nur, warum?

Ich meine, ich verstehe ja, dass es nett ist maximal Effizient zu sein. Aber ich habe mal eben versucht, es zu überschlagen, und die Rechnung geht für mich einfach nicht auf:

Der Rechner mag zwar den ganzen Tag eh an sein, aber sagen wir mal eine CPU verbraucht unter Volllast 80 Watt mehr Energie als im Ruhezustand. Wenn das Ding jetzt einen Tag läuft, sagen wir gut 12 Stunden, dann landet man ganz grob bei 1 kW/h (kostet aktuell ca. 30 Cent). Und so riesig ist eine 1024^2 png jetzt auch nicht, sagen wir, durch die Optimierung wird sie grob 10 Mb kleiner.

Schaut man sich jetzt aktuelle Festplatten an, bekommt man für 120€ schon 4 TB. Das sind dann 1 GB für 30 Cent. Das ist einhundertmal kosteneffizienter als irgendetwas neu zu komprimieren.

Und selbst wenn ich mich in meiner Rechnung vertan habe und um zwei Größernordnungen daneben liege, wäre es immer noch weniger Arbeit, jedes Jahr mal eine neue Festplatte einzubauen und Daten rüber zu kopieren, anstatt jede Woche neue Dateien komprimieren zu müssen.

Wie gesagt, akademisch interessant, aber ich sehe den Echtweltnutzen nicht so recht.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Jonathan
Establishment
Beiträge: 1335
Registriert: 04.08.2004, 20:06

Re: Mein Dateioptimierungstool

Beitrag von Jonathan » 02.09.2019, 08:15

Oh, mir ist gerade aufgefallen, dass es vielleicht eher für Webseitenbetreiber statt für Heimanwender gedacht ist. Da skaliert der Traffic natürlich mit der Anzahl der Nutzer und man muss nochmal ganz anders rechnen. Aber mit Hosting kenn ich mich zu wenig aus um das jetzt halbwegs sinnvoll machen zu können.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 02.09.2019, 08:42

Also erst einmal ist PNG wirklich mit großem Abstand das am kniffligsten zu optimierende Format (wegen der Paletten- und Filterpermutationen). JPEGs sind meist in <2 Sekunden fertig; ZIP/gz dauert deutlich länger, ist aber immer noch viiiel schneller als PNG. Da geht die Rechnung schon eher auf.

Zweitens darfst du Speicherplatz nicht mit Bandbreite verwechseln. Meine Internetverbindung ist in den letzten Jahren bei weitem nicht so viel schneller geworden wie meine Festplatten größer. Das gilt übrigens auch für Anwendungen, die du täglich startest, die dann z. B. gezippte Ressourcen oder PNGs laden. Ich hatte hier mal einen Benchmark, dass Spiele mit PNG-Ressourcen sehr viel schneller laden, wenn die PNGs optimiert sind.

Drittens – wie gesagt – der Multiplikator. Teile der GIF-Optimierung wurden aktiv von tumblr ins Leben gerufen weil sich auch sehr CPU-intensive Optimierung lohnt, wenn das GIF auf einem Blog läuft, der täglich hunderttausend Mal abgerufen wird.

Ich bin hier sicher nicht um euch zu sagen, dass ihr jetzt täglich die ganze Platte in Grund und Boden optimieren sollt. Aber falls bei euch der Bedarf aufkommt, habt ihr nun das richtige Werkzeug dafür ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Jonathan
Establishment
Beiträge: 1335
Registriert: 04.08.2004, 20:06

Re: Mein Dateioptimierungstool

Beitrag von Jonathan » 02.09.2019, 16:49

Joah, da sind ein paar gute Argumente dabei. Dankeschön.
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Zudomon
Establishment
Beiträge: 2126
Registriert: 25.03.2009, 08:20
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Zudomon » 10.09.2019, 17:05

Krishty hat geschrieben:
24.08.2019, 17:59
[*]Falls euer Benutzername oder das Verzeichnis erweiterte Unicode-Zeichen nutzt, funktionieren die JPEG-Optimierungen wegen EXIFTools Perl-Runtime nicht.
Wäre da nicht eine einfache Lösung, den Dateinamen zu ändern, das Tool drüber laufen zu lassen und dann den Dateinamen zurückzusetzen?

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 10.09.2019, 18:03

Mache ich schon – das Problem ist, dass ExifTool Perl-basiert ist, und ein Klick auf die EXE startet die Perl-Laufzeitbibliothek. Die legt ihre Dateien im Temp-Verzeichnis an (in diesem Falle C:\Users\BÖSE-UNICODE-ZEICHEN\AppData\Local\Temp), oder versucht es zumindest, und dabei geht etwas kaputt.

8.3-Dateinamen sind keine Lösung da nicht mehr überall unterstützt. Und bevor ich da drumherum arbeite, suche ich mir lieber ein neues Tool. Megabytes an Code ausschließlich für EXIF-Metadaten ist ja an sich schon verkehrt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 16.09.2019, 00:01

Kurzes Update (vor allem mit Bezug auf die wochenlange Optimierung von PNGs) und Zusammenfassung meiner Posts auf encode.su:

PNG-Optimierungs-Tools haben üblicherweise einen Parameter, mit dem man steuern kann, wie viel Rechenleistung man in die Optimierung stecken will.

Den braucht man, weil die Optimierung nicht effizient berechenbar ist, und Brute Force würde die gesamte Rechenleistung der Welt nicht reichen um die perfekte Kompression für ein kleines PNG zu berechnen.

Das ist wiederum so, weil die Kompressionsmethode – Deflate – häufigen Zeichen kürzere Bitfolgen zuordnet als seltenen (Huffman). Wenn wir nun vor der Entscheidung stehen, ob wir „Banana“ in Ban-an-a zerstückeln oder in Ba-na-na oder in B-a-n-a-n-a spielt es eine große Rolle, wie häufig B, a, n, Ba, na, Ban, und na in der gesamten Umgebung vorkommen. Aber noch kniffliger: Wenn wir uns für eine Möglichkeit entscheiden, steigt die Häufigkeit der gewählten Symbole, und das ändert möglicherweise wieder ihre Längen in Bits. Jede Entscheidung ändert also alles. Und das kriegt man n ur via Heuristik unter Kontrolle.

Okay. Man würde nun erwarten, dass die Datei umso kleiner wird, je länger man rechnet. Mit der Zeit auf X und der Größe auf Y sollten wiederholte Optimierungen – mit immer längerer Laufzeit – also so aussehen:

Bild

Da ist Rauschen drin weil a) Heuristik oft richtig liegt aber manchmal eben auch daneben und b) Zeitmessung auf Computern mindestens so schwierig ist wie perfekte Kompression.

Nun habe ich ECT (das Arbeitspferd hinter meiner PNG-Optimierung) über Lenna laufen lassen, und bekam stattdessen das hier:

Bild

Okaaaaaay. Also habe ich beschlossen, mehr Messwerte hinzuzufügen. Bis rauf zu 200 Iterationen und mehr (Papa’s Best Optimizer nutzt 600). Außerdem mehrere Block-Split-Iterationen im Vergleich (Block Splits sind Stellen, an denen man die Kompression bewusst unterbricht und den Kompressor leert – bspw. wenn Text von Englisch zu Chinesisch wechselt – damit die Wahrscheinlichkeiten und Vorhersagen des alten Modells keine teuren Fehlvorhersagen für die neuen, kontextuell unterschiedlichen Daten verursachen).

Bild

Fuck! Die Kurve sollte nie, nie, nie nach oben gehen! Das sagt uns quasi: Wenn wir ECT für 0,5 s laufen lassen (nämlich mit drei Iterationen), bekommen wir bessere Kompression hin als mit allen anderen Kompressionsstufen danach; egal, wie lange sie laufen.

Vielleicht war Lenna auch nur eine schlechte Wahl, denn PNG ist ja eher für Grafik als für Fotos. Also habe ich mir das Wikipedia-Logo geschnappt, und … gleicher Mist:

Bild

Okay. Quelltext angeschaut, aber … nichts kapiert. Gehen wir systematisch ran.

Die PNG-Kompression geschieht in zwei Stufen: Erst laufen Filter über das Bild, die die darüberliegende Zeile und alle Pixel links einbeziehen (oft eine einfache Subtraktion). Dadurch wird das zweidimensionale Problem zu einem eindimensionalen reduziert, und regelmäßige Farbverläufe produzieren bspw. nur noch einen konstanten Zahlenstrom, der sich dann super komprimieren lässt.

Danach erst kommt die Deflate-Kompression, die ich oben erwähnte.

Also habe ich die PNGs synthetisch verändert, so dass sie ungefiltert sind – wie normale Bitmaps (war ganz einfach via lodepng) – und ECTs Filterung abgeschaltet (--reuse). Falls es ein Filterproblem ist, sollten wir die Delle nun wieder sehen. Falls es ein Deflate-Problem ist, nicht.

Und wenn ich eh schon diesen riesen Aufwand betreibe, kann ich ja direkt alle anderen PNG-Tools hinzufügen und deren Leistung mit messen.

Und damit das fair ist, kompiliere ich sie alle selber für’s selbe Ziel (64-Bit-Windows) mit dem selben Compiler (Visual Studio 2019) aus dem aktuellen Trunk und packe sie in DLLs (um Namenskollisionen zwischen den Quelldateien zu vermeiden, sind ja alle unter einander gebrancht) und starte sie aus dem selben Prozess. Das wären:
  • ZopfliPNG, Googles PNG-Optimizer aus ihrem Zopfli-Projekt.
  • advpng, das PNGs sowohl mit 7-Zips Deflate-Kompressor optimieren kann als auch mit Zopfli.
  • Leanify, das ZoplfiPNG um eigene Optimierungen ergänzt.
  • … und eben ECT.
Ich wollte auch gern pngout ausprobieren, aber das ist closed source. OptiPNG nutzt die normale Zlib und ist deshalb nicht gut genug für den Vergleich.

Ergebnis:

Bild

Wir sehen ungefähr ein Promille der Größe im Graph; die Größenunterschiede sind also für Normal-User nicht dramatisch. Für Kompressionsanalyse jedoch schon.

7-Zip war so schlecht, dass es nicht sichtbar ist. Ich kann mir nicht erklären, warum – möglicherweise eine veraltete Version oder ein Bug.

ZopfliPNG und advpng schneiden ungefähr gleich ab, abgesehen von unterschiedlicher Anlaufzeit.

Leanify schlägt ZopfliPNG bei kurzer Laufzeit; danach ist es mal besser und mal schlechter.

Und ECT … rockt alles. ECT ist *viel* schneller als alle anderen. ECT komprimiert *viel* besser als alle anderen. In jedem Einzelnen Lauf.

Wir sehen auch keine Delle – der Bug mit der Delle lag also in der Filterung. Wir sehen aber ebenso, dass ECT sich unberechenbar verhält.

Wir sehen aber auch, dass wir nach tagelanger Laufzeit keine Verbesserung erwarten können, sondern dass ECT recht schnell am Limit ist. Das ist ein Signal an meinen Optimizer.

Nun habe ich die Benchmarks auf anderen Bildern wiederholt, und ECT rockt sie jedes Mal in Grund und Boden. Jedoch … bei einem Comic:

Bild

WTF. WHAT THE ACTUAL FUCK. Bei 61 Iterationen ist ECT plötzlich 10× langsamer als bei 60. Dann probierte ich die Transparenz-Demo von Wikipedia aus und … 61 Iterationen waren ZWEITAUSEND MAL LANGSAMER als 60. Kein Witz. Ich kann auch keinen Graph zeigen, weil sich alles im Pixel ganz links abspielt und die Kurve dann nach ganz rechts springt weil ECT statt zehn Sekunden plötzlich einen halben Tag läuft.

Ich spreche gerade mit den Entwicklern der Tools. Sobald sich das alles klärt, wird es im Optimizer nachgebessert …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
scheichs
Establishment
Beiträge: 439
Registriert: 28.07.2010, 20:18

Re: Mein Dateioptimierungstool

Beitrag von scheichs » 16.09.2019, 10:16

Wieder mal super Lektüre. Danke für den Aufwand das so toll hier niederzuschreiben und super, dass Du dem ganzen "nachgegangen" bist!

Benutzeravatar
Tiles
Establishment
Beiträge: 1426
Registriert: 11.01.2003, 14:21
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Tiles » 16.09.2019, 11:32

Bin mal gespannt was dabei rauskommt :)
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 20.10.2019, 10:58

Neue Version: https://papas-best.com/optimizer_de#download

Bild

Changelog gegenüber dem letzten Post hier:
  • 2019-10-20
    • options are now disabled during optimization
    • fixed possible deadlock with Leanify
    • fixed possible deadlock with damaged archives
    • fixed missing 7z.dll
    • fixed launch error message
    • fixed tab glitches
    • fixed keyboard navigation
  • 2019-10-14
    • major UI overhaul (now supporting drag’n’drop)
    • moved options to new General tab
    • fixed 7-Zip settings
    • fixed crashes with analysis
    • fixed a typo
    • fixed tab flickering
  • 2019-09-30
    • improved Office optimization
      • added XML optimization via Leanify
      • automatic settings for PNG, JPEG, … inside of Office documents
      • fixed JPEG derotation
      • removed Recursive option
    • updated ECT to version 0.8.2 from 2018-08-07 (bugfix for ZIP compression)
    • jobs can now be canceled
    • numbers now display localized
    • improved layout of archive tabs
    • added icon
    • fixed JPEG optimization failure if derotation would be lossy
    • fixed recursive gzip optimization
    • fixed initial value of Compound checkbox
    • fixed exit code message on tool errors
  • 2019-09-21
    • improved ECT PNG speed: three blocksplitting passes (six before); 60 iterations (500 before)
    • added version information to EXE
    • fixed memory leak with huge log files (e.g. during GIF optimization)
    • fixed glitch in ECT command line
Die UI ist komplett überarbeitet. Jetzt könnt ihr endlich auch Ordner/Dateien via Drag & Drop hinzufügen! Die Tabs zeigen auch endlich richtig an, wie hier beschrieben.

PNGs optimieren deutlich schneller (aber wahrscheinlich immer noch zu langsam für den Durchschnittsgeschmack). Das ist aber schon länger drin.

Ich habe erstmals ausgiebig auf Windows 10 getestet, und interessanterweise ging dort einiges kaputt. Ich rufe ja einen Satz Dritt-Tools auf, via CreateProcess() mit Pipes als stdin/stdout/stderr, so dass sie ohne Konsole laufen und alle Ein- und Ausgaben in meinem Optimizer landen.

Nun haben zwei Tools auf Windows 10 nach Eingaben gefragt, die auf Windows 7 nicht fragen: Leanify wollte plötzlich Press any key to continue . . . von mir und 7-Zip fragt bei beschädigten ZIP-Dateien plötzlich nach, ob man weitermachen möchte. Beide hingen natürlich, weil ich auf sowas nicht vorbereitet war.

Ziemlich merkwürdig, sowas. Aber nun sollte es gehen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 7032
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Mein Dateioptimierungstool

Beitrag von Krishty » 09.01.2020, 22:31

Ich habe mich in letzter Zeit zurückgehalten, weil die Updates immer recht klein waren, aber nun hat sich doch ordentlich was angestaut:

https://papas-best.com/optimizer_de

Erstmal gibt es nun ein Setup. Ist bequemer.

Die UI ist noch weiter verfeinert worden und läuft nur noch über Drag & Drop. Beim Beenden des Optimizers werden nun die Einstellungen gespeichert, so dass ihr die Haken nicht immer neu setzen müsst.

Intern nutze ich nun Condition Variables, um nebenläufige Arbeit mit der UI zu synchronisieren. Dadurch könnt ihr die Thread-Zahl während der Optimierung hoch- und runterdrehen – allerdings wird die Änderung träge übernommen, um keine Jobs abzubrechen. Nützlich, wenn man mal auf Energiesparmodus gehen muss oder so.

Die PNG-Optimierung wurde minimal verbessert. Da war ein Bug im Code, der defluff und deflopt nicht korrekt im Wechsel aufgerufen hat. Die TGA-zu-PNG-Konvertierung habe ich rausgeschmissen, da die wohl eh niemand genutzt hat.

Die ZIP- und gzip-Optimierung überprüft ihre Ergebnisse nun über Prüfsummen. War eigentlich überfällig. Dabei habe ich auch direkt ein Problem in 7-Zip entdeckt: Die Prüfsumme unterscheidet sich, wenn man die Daten in ZIP überprüft und wenn man sie extrahiert.

Ursache dafür ist, dass ZIP-Dateien zwei Wege kennen, Ordner zu speichern. ZIPs haben ein Central Directory, in dem alle Objekte verzeichnet sind. Ordner können dort entweder als separates Ordner-Element abgelegt werden – so macht es 7-Zip – oder ohne separates Ordner-Element direkt in den Dateinamen einer Datei geschrieben werden, à foo/bar.txt. Das tun Optimierungstools wenn sie erkennen, dass sich der Platzverbrauch eines separaten Ordnerelements nicht lohnt. 7-Zip zeigt in solchen ZIPs zwar die Ordner korrekt an, berücksichtigt sie aber nicht bei der Prüfsummenberechnung, wodurch die Prüfsummen der Dateinamen von dem abweichen, was man beim Betrachten des Archivs erwarten würde. Ich finde, dass es ein Bug ist; Igor Pavlov wohl nicht.

Das nächste große Ding wird EPUB-Optimierung, also für Ebooks. EPUB ist im Grunde ein ZIP-Archiv, stellt aber exotische Anforderungen: Die erste Datei im Archiv muss immer mimetype heißen und darf nicht komprimiert sein. Das ist mit Optimierungs-Tools knifflig, denn die sortieren halt nach Belieben um und komprimieren.

Ich bin schon recht weit und erreiche auf übliche EPUBs 5–15 %; wer es ausprobieren möchte, kann sich bei encode.su einen Prototypen herunterladen. Offiziell freigegeben wird’s erst, wenn ich die Validierungsbibliothek ans Laufen gekriegt habe (braucht Java, und das kommt mir nicht auf den PC).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Antworten