ZipPackage - Kompression ein Fremdwort?

Muepe32

Erfahrenes Mitglied
Hallo zusammen

Ich versuche mich momentan gerade an der Klasse System.IO.Packaging.ZipPackage und möchte gerne eine Datei in ein Archiv abspeichern und natürlich auch bisschen komprimieren. Die Funktion dazu sieht relativ simpel aus:
C#:
        public static void CompressFiles(string zipFile, params string[] filesToPack)
        {
            var pkg = ZipPackage.Open(zipFile, FileMode.Create) as ZipPackage;
            foreach (var s in filesToPack)
            {
                var uriName = Path.GetFileName(s);
                var uri = PackUriHelper.CreatePartUri(new Uri(uriName, UriKind.RelativeOrAbsolute));
                var part = pkg.CreatePart(uri, "video/avi", CompressionOption.Maximum);
                var bytes = File.ReadAllBytes(s);
                part.GetStream().Write(bytes, 0, bytes.Length);
            }

            pkg.Close();
        }

Ich speichere eine unkomprimierte AVI-Datei mit 69 MB Grösse in das Archiv. Mit WinRAR bekomm ich daraus eine ZIP-Datei der Grösse 45 MB. Die entstehende ZIP-Datei mit oben geposteter Funktion ist 71 MB gross.

Daher meine Frage: Ist es Absicht, dass die ZipPackage-Klasse absolut überhaupt nicht komprimiert (im Gegenteil) obwohl die Datei super komprimierbar ist? Oder mache ich einfach etwas falsch...

Gruss
Muepe
 
Aus der MSDN:
For the default ZipPackage derived class, the CreatePart method only supports two compressionOption values, NotCompressed or Normal compression. Other CompressionOption values of Maximum, Fast, or SuperFast use Normal compression.
Und wenn man sich das hier durchließt, dann sieht es so aus, als würdest du nicht viel mehr herausholen können als die 71 MB.
 
@deepthroat: ich möchte so wenige externe Bibliotheken verwenden wie möglich, da dies immer Probleme mit den Lizenzen geben kann wenn man sie kommerziell verwendet.

Ich werde dann wohl mal meine eigene Implementation auf zLib basierend machen.
 
Ja, das habe ich gesehen, mich stört da irgendwie der Artikel:
Bei Weiterverbreitung in compilierter Form muss eine Lizenz gewählt werden, die der Ms-PL nicht widerspricht.

Was würde das jetzt im kommerziellen Fall bedeuten? Ein simpler Verkauf mit sichtbarem Vermerk in der Applikation, dass DotNetZip verwendet wurde und entsprechendem (C) wäre passabel? Oder wie muss ich den Teil "..muss eine Lizenz gewählt werden..." im Zusammenhang mit Verkauf verstehen?
 
Ja, das habe ich gesehen, mich stört da irgendwie der Artikel:
Bei Weiterverbreitung in compilierter Form muss eine Lizenz gewählt werden, die der Ms-PL nicht widerspricht.
Das versteht sich doch aber fast von selbst, das du keine Lizenz einsetzen kannst, die einem der Punkte der Ms-PL direkt widerspricht.

Z.B. kannst du keine Lizenz wählen die fordert, dass Trademarks, Logos oder Namen von (Mit-)Schöpfern jeder verwendeten Software immer ohne Erlaubnis verwendet werden müssen, da das direkt Punkt 3. (A) der Ms-PL widerspricht. (http://www.opensource.org/licenses/ms-pl)
Was würde das jetzt im kommerziellen Fall bedeuten? Ein simpler Verkauf mit sichtbarem Vermerk in der Applikation, dass DotNetZip verwendet wurde und entsprechendem (C) wäre passabel?
Ich sehe nicht wo das gefordert wäre. Schaden kann es sicherlich nicht.

Gruß
 

Neue Beiträge

Zurück