Creates a new deflate stream for compression. If a given argument is nil, the default value of that argument is used.
The level
sets the compression level for the deflate stream
between 0 (no compression) and 9 (best compression. The following constants
have been defined to make code more readable:
-
Zlib::NO_COMPRESSION = 0
-
Zlib::BEST_SPEED = 1
-
Zlib::DEFAULT_COMPRESSION = 6
-
Zlib::BEST_COMPRESSION = 9
The window_bits
sets the size of the history buffer and should
be between 8 and 15. Larger values of this parameter result in better
compression at the expense of memory usage.
The mem_level
specifies how much memory should be allocated
for the internal compression state. 1 uses minimum memory but is slow and
reduces compression ratio while 9 uses maximum memory for optimal speed.
The default value is 8. Two constants are defined:
-
Zlib::DEF_MEM_LEVEL
-
Zlib::MAX_MEM_LEVEL
The strategy
sets the deflate compression strategy. The
following strategies are available:
- Zlib::DEFAULT_STRATEGY
-
For normal data
- Zlib::FILTERED
-
For data produced by a filter or predictor
- Zlib::FIXED
-
Prevents dynamic Huffman codes
- Zlib::HUFFMAN_ONLY
-
Prevents string matching
- Zlib::RLE
-
Designed for better compression of PNG image data
See the constants for further description.
Examples
Basic
1 2 3 | open "compressed.file" , "w+" do |io| io << Zlib::Deflate. new .deflate( File .read( "big.file" )) end |
Custom compression
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | open "compressed.file" , "w+" do |compressed_io| deflate = Zlib::Deflate. new (Zlib:: BEST_COMPRESSION , Zlib:: MAX_WBITS , Zlib:: MAX_MEM_LEVEL , Zlib:: HUFFMAN_ONLY ) begin open "big.file" do |big_io| until big_io.eof? do compressed_io << zd.deflate(big_io.read( 16384 )) end end ensure deflate.close end end |
While this example will work, for best optimization review the flags for your specific time, memory usage and output space requirements.
Please login to continue.