當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。