Warum komprimiert ZIP Compression nichts?

18

Ein Verzeichnis mit 398 MB wurde nur mit 7Z und normaler ZIP-Komprimierung auf 393 MB komprimiert. Ist das normal? Wenn ja, warum wird ZIP unter Windows weiterhin verwendet?

Thomas Owens
quelle

Antworten:

70

Wenn Sie Dinge komprimieren, die bereits komprimiert sind (AVI, JPEG, MP3), werden Sie nicht viel anderes gewinnen, als alles in eine einzige Datei zu packen.

Chris Karcher
quelle
1
Und ich habe sogar gesehen, dass es umgekehrt funktioniert und das komprimierte Archiv größer ist als die einzelnen komprimierten Dateien.
Fiasco Labs
32

Bei der Komprimierung wird nach sich wiederholenden Mustern in den zu komprimierenden Elementen gesucht. Auch weil Sie beim Komprimieren Ihrer Dateien keine Daten verlieren möchten, muss die Komprimierung verlustfrei sein (*).
Denken Sie jetzt im Hinterkopf darüber nach, wie Dateien (Elemente) auf einem Computer gespeichert werden. Auf der untersten Ebene sind sie alle nur ein Bündel von Nullen und Einsen.

Die Frage lässt sich also wie folgt umwandeln: " Wie kann ich ein Bündel von Einsen und Nullen kompakter darstellen als die ursprüngliche Darstellung? "

Fangen wir also von vorne an, wie können Sie die normale Darstellung eines einzelnen Bits (einer einzelnen 1 oder einer einzelnen 0) komprimieren?
Die Antwort ist ganz einfach: Sie können nicht! ... wird ein einzelnes Bit möglichst kompakt dargestellt.

Nehmen wir ein größeres Beispiel: Wie würden Sie eine Binärzeichenfolge wie 0111 0111 0100 0111 komprimieren ?
Nun, weil wir bereits wissen, dass es uns überhaupt nicht hilft, die einzelnen Teile zu betrachten, wissen wir, dass wir einen größeren Maßstab haben müssen. Nehmen wir zum Beispiel 4 Bits gleichzeitig. Wir sehen jetzt, dass die Binärzeichenfolge "0111" im Beispiel dreimal vorkommt. Warum stellen wir das nicht mit einem einzelnen Bit dar: 0? Aber dies lässt 0100 immer noch im Dunkeln, also lassen Sie uns das mit "1" darstellen.
Wir wissen, dass wir das Original auf "0010" komprimiert haben.

Das ist wirklich gut! Dies ist jedoch nur die Grundlage des "Huffman-Codierungsalgorithmus" , und in der Realität wird es etwas komplizierter sein (und Sie müssten auch eine Tabelle mit den darin enthaltenen Codierungsinformationen speichern, aber das ist eine etwas zu weit, um diese Frage zu beantworten).

Jetzt wirklich Ihre Frage zu beantworten: Warum können nicht alle Daten so gut komprimiert werden ?, gut sich ein anderes Beispiel: „0001 0110 1000 1111“, wenn wir die gleiche Technik verwenden würden , wie oben wir nicht die Daten zu komprimieren , wären in der Lage (keine Wiederholung gefunden), und würde somit nicht von Komprimierung profitieren ...


(*) Hiervon gibt es natürlich Ausnahmen. Das bekannteste Beispiel hierfür ist die Komprimierung von MP3-Dateien. Hier gehen einige Informationen über die Sounds verloren, wenn sie von der rohen Originaldatei in das MP3-Format konvertiert werden. Diese Komprimierung ist daher verlustbehaftet . Ein weiteres Beispiel ist das JPG-Format für Bilder

sven
quelle
6

Beim Komprimieren werden wiederholbare Muster verwendet und zu kürzeren Mustern zusammengefasst. Die Ausgabe ist dann meist nicht wiederholbar und kann daher nicht oder nur wenig komprimiert werden.

Spoulson
quelle
6

Aus dem Abschnitt Einschränkungen des Wikipedia-Artikels zur verlustfreien Komprimierung :

Verlustfreie Datenkomprimierungsalgorithmen können die Komprimierung nicht für alle Eingabedatensätze garantieren. Mit anderen Worten, für jeden (verlustfreien) Datenkomprimierungsalgorithmus gibt es einen Eingabedatensatz, der bei der Verarbeitung durch den Algorithmus nicht kleiner wird. Dies lässt sich mit der Elementarmathematik mit einem Zählargument leicht nachweisen. ...

Grundsätzlich ist es theoretisch unmöglich, alle möglichen Eingabedaten verlustfrei zu komprimieren.

Jared Updike
quelle
Es ist schwieriger, Daten zu komprimieren, die bereits komprimiert wurden. Bilder, Videos sind meistens komprimiert, da die Originalgröße sehr groß wäre
phuclv
4

Ist das normal?

Nein, nicht bei "normalen" Dateien. Welche Art von Dateien haben Sie komprimiert? Wenn sie bereits komprimiert wurden, z. B. JPGs, GIFs, PNGs, Videos oder sogar andere ZIP-Dateien, werden sie von keinem Algorithmus stark komprimiert. Wenn Sie versuchen, Text-, XML-, unkomprimierte BMP-, Quellcode- usw. Dateien zu komprimieren, bietet zip eine gute Komprimierung, aber wahrscheinlich nicht die absolut beste.

Warum wird ZIP unter Windows weiterhin verwendet?

Ein Grund dafür ist, dass das System über eine nette Zip-Verwaltung verfügt. Sie können mit der rechten Maustaste auf eine beliebige Stelle klicken, eine neue Zip-Datei erstellen und diese dann ablegen. Sie können einfach auf eine Zip-Datei doppelklicken und sie wird wie ein Ordner geöffnet. Sie können Dinge daraus kopieren und manchmal sogar an Ort und Stelle verwenden. Sie müssen weder WinZip noch 7z oder ein anderes Programm installieren. Normalerweise empfehle ich Leuten, dies nicht zu tun.

rjmunro
quelle
2

In einem Zip-Archiv mit vielen Dateien wird jede Datei unabhängig komprimiert. Wenn die Dateien sehr ähnlich sind, bietet ein anderes Tool möglicherweise eine bessere Komprimierung.

Beispielsweise verknüpft tar.gz die Dateien und komprimiert dann die Ergebnisse. Ebenso nutzt eine "solide" rar-Datei Ähnlichkeiten zwischen Dateien.

Der Nachteil von tar.gz oder einem soliden rar ist, dass Sie keine einzelne Datei mehr aus einem großen Archiv extrahieren können, ohne das Archiv zu dekomprimieren, bis die gewünschte Datei vorliegt.

Stephen Denne
quelle