deflatestream

___ answer3864094 ___

So ein großer Unterschied scheint mir seltsam, aber Sie sollten bedenken, dass %code% selbst in ZIP komprimiert ist, also gibt es keinen Grund, sie erneut zu komprimieren, die Ergebnisse sind normalerweise größer.

    
___ answer3864151 ___

Erstens sind deflate / gzip-Streams bei Komprimierung bemerkenswert schlecht im Vergleich zu zip, 7z usw.

Zweitens sind docx (und alle MS-Dokumentformate mit einem "x" am Ende) nur .zip-Dateien. Benennen Sie ein .docx in .zip um, um den Rauch und die Spiegel zu enthüllen.

Wenn Sie also deflate / gzip über ein docx ausführen, wird die Datei tatsächlich größer. (Es ist so, als würde man eine komprimierte Zip-Datei über eine gezippte Datei mit hoher Komprimierung erstellen.)

Wenn Sie jedoch deflate / gzip über HTML oder eine Textdatei oder etwas, das nicht komprimiert ist, ausführen, wird es tatsächlich einen ziemlich guten Job machen.

    
___ answer3864568 ___

Obwohl es stimmt, wie andere gezeigt haben, dass die von Ihnen angegebenen Beispieldateien bereits komprimiert sind, ist das größte Problem, dass im Gegensatz zu den meisten Komprimierungsprogrammen DeflateStream und GZipStream -Klassen versuchen einfach, einen Datenstrom zu tokenisieren / komprimieren, ohne dass die Intelligenz, dass alle zusätzlichen Token (Overhead) tatsächlich die Menge der benötigten Daten erhöhen. Zip, 7z usw. sind schlau genug zu wissen, dass, wenn Daten weitgehend zufällig sind (praktisch nicht komprimierbar), sie einfach die Daten "wie sie sind" (speichern, nicht komprimiert) speichern, anstatt zu versuchen, sie weiter zu komprimieren / p>     

___ qstntxt ___

Ich versuche, deflate / gzip Streams in C # zu verwenden, aber es scheint, dass die Dateien nach der Komprimierung größer sind als vorher.

Zum Beispiel, ich komprimiere eine docx-Datei von 900ko, aber es produziert eine 1.4Mo one!

Und es tut es für jede Datei, die ich ausprobiert habe.

Vielleicht liege ich falsch in der Art, wie ich es mache? Hier ist mein Code:

%Vor%     
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123gzipstream ___ GZipStream ist eine .NET 2.0 + -Klasse für die Komprimierung und Dekomprimierung im gzip-Format. ___ tag123defatestream ___ Integrierte Microsoft .NET-Unterstützung für den standardkonformen Deflate-Algorithmus (Komprimieren und Dekomprimieren). ___ answer7728022 ___

Ich hatte das gleiche Problem beim Komprimieren von Datenbanken mit JPG-Daten. Ich habe dotnetzip ausprobiert - ein Ersatzgeld und eine ordentliche Komprimierung (unterstützt auch Compact Framework!):

%Vor%     
___ answer3864095 ___

Ich glaube nicht, dass GzipStream und DeflateStream Dateien komprimieren sollen. Sie hätten wahrscheinlich mehr Glück mit einem Dateikomprimierer wie SharpZipLib .

    
___ qstnhdr ___ GZipStream und DeflateStream erzeugen größere Dateien ___
1
Antwort

DeflateStream dekomprimiert die Daten nicht (das erste Mal)

Also hier ist ein seltsames. Ich habe diese Methode, um eine Base64-codierte deflated Zeichenfolge zu nehmen und die ursprünglichen Daten zurückzugeben: %Vor% Dies gibt eine leere Zeichenfolge zurück, es sei denn Ich füge einen zweiten Auf...
11.11.2010, 20:27
5
Antworten

GZipStream und DeflateStream erzeugen größere Dateien

Ich versuche, deflate / gzip Streams in C # zu verwenden, aber es scheint, dass die Dateien nach der Komprimierung größer sind als vorher. Zum Beispiel, ich komprimiere eine docx-Datei von 900ko, aber es produziert eine 1.4Mo one! Und es t...
05.10.2010, 13:27