本文简要介绍ruby语言中 Zlib::Deflate.new
的用法。
用法
Zlib::Deflate.new(level=DEFAULT_COMPRESSION, window_bits=MAX_WBITS, mem_level=DEF_MEM_LEVEL, strategy=DEFAULT_STRATEGY)
为压缩创建一个新的 deflate 流。如果给定参数为 nil,则使用该参数的默认值。
level
将 deflate 流的压缩级别设置在 0(无压缩)和 9(最佳压缩)之间。已定义以下常量以使代码更具可读性:
-
Zlib::DEFAULT_COMPRESSION
-
Zlib::NO_COMPRESSION
-
Zlib::BEST_SPEED
-
Zlib::BEST_COMPRESSION
有关详细信息,请参阅www.zlib.net/manual.html#Constants。
window_bits
设置历史缓冲区的大小,应该在 8 到 15 之间。此参数的值越大,压缩效果越好,但会占用内存。
mem_level
指定应为内部压缩状态分配多少内存。 1 使用最小内存但速度较慢并降低压缩率,而 9 使用最大内存以获得最佳速度。默认值为 8。定义了两个常量:
-
Zlib::DEF_MEM_LEVEL
-
Zlib::MAX_MEM_LEVEL
strategy
设置放气压缩策略。可以使用以下策略:
- Zlib::DEFAULT_STRATEGY
-
对于普通数据
- Zlib::过滤
-
对于过滤器或预测器产生的数据
- Zlib::已修复
-
防止动态霍夫曼代码
- Zlib::HUFFMAN_ONLY
-
防止字符串匹配
- Zlib::RLE
-
专为更好地压缩 PNG 图像数据而设计
请参阅常量以获取更多说明。
例子
基本的
open "compressed.file", "w+" do |io|
io << Zlib::Deflate.new.deflate(File.read("big.file"))
end
自定义压缩
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
虽然此示例可以工作,但为了获得最佳优化,请查看您的特定时间、内存使用和输出空间要求的标志。
相关用法
- Ruby Deflate.deflate用法及代码示例
- Ruby DefMethod模块用法及代码示例
- Ruby DependencyState.pop_possibility_state用法及代码示例
- Ruby DependencyGraph.==用法及代码示例
- Ruby DependencyGraph.vertices用法及代码示例
- Ruby Delegator类用法及代码示例
- Ruby Deprecate模块用法及代码示例
- Ruby DependencyGraph.tsort用法及代码示例
- Ruby Date.valid_civil?用法及代码示例
- Ruby DateTime jisx0301()用法及代码示例
- Ruby Date cwday()用法及代码示例
- Ruby Date ctime()用法及代码示例
- Ruby Date.gregorian?用法及代码示例
- Ruby DRb.regist_server用法及代码示例
- Ruby DH.public_key用法及代码示例
- Ruby Date asctime()用法及代码示例
- Ruby DateTime类用法及代码示例
- Ruby DateTime.hour用法及代码示例
- Ruby DateTime.jd用法及代码示例
- Ruby DateTime.zone用法及代码示例
- Ruby DateTime ordinal()用法及代码示例
- Ruby DateTime.second用法及代码示例
- Ruby Date.strftime用法及代码示例
- Ruby Digest.update用法及代码示例
- Ruby DSA.export用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Deflate.new。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。