Algorithmus zur JPG-Komprimierung Lepton ist nun Open Source – ich hab es ausprobiert

20 Juli 2016 4 Kommentare Autor: Jürgen (jdo)

Dropbox hatte ein Problem mit JPG- oder JPEG-Bildern. Dabei ging es weniger um den Inhalt, sondern um die Größe. Um die unzähligen JPG-Bilder besser komprimieren zu können und somit Platz und Geld zu sparen, hat der Cloud-Provider einen eigenen Algorithmus entwickelt. Der nennt sich Lepton und ist aber sofort unter einer Open-Source-Lizenz verfügarb. Dropbox hat sich dabei für die Apache-Lizenz entschieden.

Was Lepton genau und im technischen Detail macht, kannst Du im Blog von Dropbox durchlesen. Ich fasse mal die wichtigsten Punkte zusammen.

Der Algorithmus spart im Durchschnitt 22 Prozent Storage

  • Laut eigenen Angaben kann Dropbox durch Lepton 22 Prozent an Storage bei Bildern mit JPG oder JPEG einsparen.
  • Dabei ist es eine verlustfreie (lossless) Kompression.
  • Lepton komprimiert Bilder mit einer Rate von fünf Megabyte pro Sekunde.
  • Die Software stellt die Datei mit zirka 15 Megabyte pro Sekunde wieder her oder dekodiert sie. Dabei benötigt der Prozess weniger als 24 Megabyte an Arbeitsspeicher.

Dropbox hat Lepton verwendet, um 16 Milliarden Bilder zu kodieren. Ältere Bilder werden ebenfalls noch durch den Algorithmus gejagt. Die Firma gibt an, dadurch schon mehrere Petabyte an Storage gespart zu haben.

Die Community will das Unternehmen einbeziehen, um den Algorithmus oder das Programm noch besser zu machen.

Lepton installieren

Ich habe mir gedacht, wenn das Programm nun schon Open Source ist, probier ich es selbst mal aus. Auf GitHub.com ist der Quellcode gehostet und von da kann ich es einfach installieren:

git clone https://github.com/dropbox/lepton

lepton via GitHub installieren

lepton via GitHub installieren

Nun gibt es mehrere Möglichkeiten, den Quellcode unter Linux zu kompilieren. Eine Möglichkeit ist via automake oder auch CMAKE. Bei mir hat es am Anfang einen Fehler gegeben, da ich eine Maschine mit Kubuntu 14.04 benutzt habe, auf der gcc 4.6 lief. In einer Readme-Datei bei GitHub ist zu lesen, dass gcc 4.8 oder höher Abhilfe schafft. Das stimmt auch. Ich habe umgestellt und danach hat das Kompilieren funktioniert.

Bilder umwandeln

Wenn ich das Programm vor und zurück verwende, lässt sich damit tatsächlich jede Menge Platz sparen. Ein Screenshot:

Lepton vor und zurück

Lepton vor und zurück

Was ich da gemacht habe:

  1. Ich habe das Bild _MG_7340.JPG komprimiert
  2. Die entstandene .lep-Datei (ganz unten nach ls- ltrh) ist im Gegensatz zum Original (7,1 MByte) nur noch 5,9 MByte groß
  3. Nun habe ich die Datei wieder dekodiert und unter einem anderen Namen gespeichert: _MG_7340-restored.JPG
  4. Im Anschluss wurde das Original mit der wiederherstellten Datei verglichen (Stichwort diff) – keine Ausgabe bedeutet, dass die Dateien identisch sind.
  5. Lasse ich diff über die .lep-Datei und das Original laufen, gibt es einen Unterschied.

Kein Betrachter vorhanden

Nun muss man die Sache im Moment ein wenig nüchtern betrachten. Für Langzeitarchivierung spart das jede Menge Platz. Sobald eine Datei angefragt wird, dekodiert der Algorithmus sie und die entsprechende Software kann das JPG anzeigen.

Da der Code nun Open Source ist, wird die Software in der Zukunft hoffentlich in einige Betrachter Einzug finden. Das gilt zumindest für den Prozess des Dekodierens. Dann würde sich das sehr wohl für jeden lohnen, die JPG-Bilder besser komprimiert zu speichern.

Ansonsten ist jedesmal eine Dekodierung notwendig. Natürlich können Firmen in bestehende Lösungen Workarounds einbauen. Wünschenswert wäre aber eine Methode, die alle auf einfache Weise nutzen können. Auf jeden Fall ließen sich mit diesem Befehl alle JPG-Bilder in einem Verzeichnis mit Lepton komprimieren:

for i in *; do ../lepton "$i"; done

Die Angabe einer Ausgabedatei ist nicht notwendig. Die Software nimmt einfach das Original und tauscht die Endung durch .lep. Sehr interessantes Projekt und toll, dass es nun Open Source ist.

Alternative wäre opt-jpg

Ich habe schon mal eine Methode getestet, die ebenfalls sehr gut komprimiert (opt-jpg aus den littleutils). Nach einer Kompression ließen sich mit dem Auge keine Unterschiede feststellen. Der Vorteil ist, dass sich die Bilder weiterhin mit den üblichen Betrachtern aufrufen lassen. Der Nachteil ist, dass die Kompression nicht so stark wie bei Lepton ist.

opt-jpg und EXIF-Dateien erhalten

opt-jpg und EXIF-Dateien erhalten

Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren




Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
oder bitcoin - Adresse: 1NacVNwcLLePUVv8uSafu5Ykdwh8QyDfgK). Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!
 Alle Kommentare als Feed abonnieren

4 Kommentare zu “Algorithmus zur JPG-Komprimierung Lepton ist nun Open Source – ich hab es ausprobiert”

  1. max sagt:

    Toller Blog! Macht Spaß sich hier durch zu lesen 🙂

  2. Ikem sagt:

    > Lasse ich diff über die .lep-Datei und das Original laufen, gibt es _keinen_ Unterschied.

    Typo?

Antworten