当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Deflate.new用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Deflate.new。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。