Estoy tratando de usar flujos desinflados/gzip en C#, pero parece que los archivos después de la compresión son más grandes que antes.GZipStream y DeflateStream producen archivos más grandes
Por ejemplo, comprime un archivo docx de 900ko, pero produce un 1.4Mo uno.
Y lo hace por cada archivo que probé.
¿Puedo estar equivocado en la forma en que lo estoy haciendo? Aquí está mi código:
FileStream input = File.OpenRead(Environment.CurrentDirectory + "/file.docx");
FileStream output = File.OpenWrite(Environment.CurrentDirectory + "/compressedfile.dat");
GZipStream comp = new GZipStream(output, CompressionMode.Compress);
while (input.Position != input.Length)
comp.WriteByte((byte)input.ReadByte());
input.Close();
comp.Close(); // automatically call flush at closing
output.Close();
¿Se da cuenta de que un método de compresión que se comprima * cualquier arbitraria * Entrada por al menos un byte no puede existir? Entonces, especialmente si está tratando de comprimir datos que ya están cerca del azar, p. datos precomprimidos, puede ver un aumento de tamaño. – Joey
.docx ya está comprimido usando compresión ZIP (intente cambiar el nombre a .zip y tener una exploración). Me sorprendería si un segundo nivel de compresión produjera algún beneficio. – spender
debería efectivamente hacer compresión solo en el color, por lo que no debería cambiar nada – kite